admin 管理员组

文章数量: 1184232


2024年3月13日发(作者:easeljs中帧编号)

POSIX 多线程程序设计

Blaise Barney, Lawrence Livermore National Laboratory

目录表

1. 摘要

2. Pthreads 概述

1. 什么是线程?

2. 什么是Pthreads?

3. 为什么使用Pthreads?

4. 使用线程设计程序

3. Pthreads API编译多线程程序

4. 线程管理

1. 创建和终止线程

2. 向线程传递参数

3. 连接(Joining)和分离( Detaching)线程

4. 栈管理

5. 其它函数

5. 互斥量(Mutex Variables)

1. 互斥量概述

2. 创建和销毁互斥量

3. 锁定(Locking)和解锁(Unlocking)互斥量

6. 条件变量(Condition Variable)

1. 条件变量概述

2. 创建和销毁条件变量

3. 等待(Waiting)和发送信号(Signaling)

7. 没有覆盖的主题

8. Pthread 库API参考

9. 参考资料

摘要

在多处理器共享内存的架构中(如:对称多处理系统SMP),线程可以用于

实现程序的并行性。历史上硬件销售商实现了各种私有版本的多线程库,使得软

件开发者不得不关心它的移植性。对于UNIX系统,IEEE POSIX 1003.1标准定

义了一个C语言多线程编程接口。依附于该标准的实现被称为POSIX theads 或

Pthreads。

该教程介绍了Pthreads的概念、动机和设计思想。内容包含了Pthreads API主要

的三大类函数:线程管理(Thread Managment)、互斥量(Mutex Variables)和

条件变量(Condition Variables)。向刚开始学习Pthreads的程序员提供了演示例

程。

适于:刚开始学习使用线程实现并行程序设计;对于C并行程序设计有基本了

解。不熟悉并行程序设计的可以参考EC3500: Introduction To Parallel Computing。

Pthreads 概述

什么是线程?

技术上,线程可以定义为:可以被操作系统调度的独立的指令流。但是这

是什么意思呢?

对于软件开发者,在主程序中运行的“函数过程”可以很好的描述线程的

概念。

进一步,想象下主程序()包含了许多函数,操作系统可以调度这些

函数,使之同时或者(和)独立的执行。这就描述了“多线程”程序。

怎样完成的呢?

在理解线程之前,应先对UNIX进程(process)有所了解。进程被操作系

统创建,需要相当多的“额外开销”。进程包含了程序的资源和执行状态

信息。如下:

o

进程ID,进程group ID,用户ID和group ID

o

环境

o

工作目录

o

程序指令

o

寄存器

o

o

o

文件描述符

o

信号动作(Signal actions)

o

共享库

o

进程间通信工具(如:消息队列,管道,信号量或共享内存)


本文标签: 线程 设计 实现 进程