多线程编程的优点:
1.相应度高
2.资源共享
3.经济
4.多处理器体系结构的利用
提供线程支持的两种方法:
1.用户层的用户线程
2.内核层的内核线程
多线程模型
多对一模型
将许多用户级线程映射到一个内核线程。线程管理由线程库在用户空间进行,因而效率比较高。但如果一个线程执行了阻塞系统调用,那么整个进程会阻塞。而且因为任一时刻只有一个线程能访问内核,多个线程不能并行运行在多处理器上。
eg. Green thread, GNU portable threads, …
一对一模型
将每个用户线程映射到一个内核线程。在一个线程执行阻塞系统调用时,能允许另一个线程继续执行。允许多个线程并行地允许在多处理器系统上。缺点是每个用户线程都要创建一个相应的内核线程,由于创建内核线程的开销会影响应用程序的性能,所以限制了系统所支持的线程数量。
eg. Linux, Windows, …
多对多模型
多路复用了许多用户线程到同样数量或更小数量的内核线程上。内核线程的数量可能与特定应用程序或特定机器有关(位于多处理器上的应用程序可能比单处理器上分配更多数量的内核线程)。开发人员可创建任意多的用户线程,并且相应内核线程能在多处理器系统上并发执行。当一个线程执行阻塞系统调用时,内核能调度另一个线程来执行。
二级模型
多路复用许多用户线程到同样数量或更小数量的内核线程上,但也允许将一个用户线程绑定到某个内核线程上。
<to be continued>