深入理解计算机系统——第12章:基于线程的并发编程

多进程:每个流单独的进程。私有的地址空间,共享数据困难。

IO多路复用:所有流在一个进程上,共享地址空间,利用IO多路复用技术来调用逻辑流。

 

线程:

(1)线程就是运行在进程的上下文中的逻辑流,线程由内核自动调度。

(2)线程都有自己的线程上下文,包括线程ID,线程栈,栈指针,程序计数器,通用目的寄存器,条件码。

(3)所有运行在一个进程的线程都共有虚拟地址空间。

线程是进程和IO多路复用的结合:

(1)同进程一样,线程由内核自动调度,内核识别线程ID。

(2)同IO一样,线程运行在同一进程的上下文中,共享进程虚拟地址空间的整个内容,包括堆,代码,数据,共享库,打开文件。

 

12.3.1 线程执行模型:

(1)从某一时刻主线程创建一个对等线程,那么从这个时候开始,两个线程并发的执行。

线程与进程的不同:

(2)线程的相互之间的切换要快得多。

(3)线程不是和进程一样按照父子进程来组织的,线程创建的是对等线程。

线程池:

(4)同一个进程相关的线程组成一个对等的线程池。

(5)一个线程可以杀死它的任何的对等线程,也可以等待它的终止。每个对等线程之间可以共享数据。

 

12.3.2 Posix线程

 

12.3.3 创建线程

(1)pthread_create函数

(2)pthread_self函数

12.3.4 终止线程

(1)当顶层的线程例程返回时,会隐式的终止

(2)pthread_exit函数,显式的终止

(3)某个对等线程调用unix的exit函数,则终止进程以及与进程相关的所有线程。

(4)pthread_cancel函数

12.3.5 回收已终止线程资源

12.3.6 分离线程

12.3.7 初始化线程

 

posted @ 2015-09-08 16:54  弱水三千12138  阅读(245)  评论(0编辑  收藏  举报