典型的UNIX进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程(或简称为线程)以后,在程序设计时可以把进程设计成在同一时刻能够做不止一件事,每个线程处理各自独立的任务。这种方法有很多好处:
有些人把多线程的程序设计与多处理器系统联系起来,但是即使程序运行在单处理器上,也能得到多线程编程模型的好处。处理器的数量并不影响程序结构,所以不管处理器的个数是多少,程序都可以通过使用线程得以简化。而且,即使多线程程序在串行化任务时不得不阻塞,由于某些线程在阻塞的时候还有另外一些线程可以运行,所以多线程程序在单处理器上运行仍然能够改善响应时间和吞吐量。
线程包含了表示进程内执行环境必需的信息,其中包括进程中标识线程的线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno变量以及线程私有数据。进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本、程序的全局内存和堆内存、栈以及文件描述符。
我们将要讨论的线程接口来自POSIX.1-2001。线程接口(也称为“pthread”或“POSIX线程”)在POSIX.1-2001中是一个可选特征。POSIX线程的特征测试宏是_POSIX_THREADS,应用程序可以把这个宏用于#ifdef测试,以在编译时确定是否支持线程;也可以把_SC_THREADS常数用于调用sysconf函数,从而在运行时确定是否支持线程。
本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。
新闻热点
疑难解答