线程支持有两种,一种是用户线程,一种是内核线程
用户线程和内核线程之间存在某种关系,有多对一模型,一对一模型,多对多模型。
多对一模型:
多对一模型是多个用户级线程到一个内核线程。
优点:线程管理是由用户空间的线程库来完成的,因此效率更高。
缺点:
一个进程执行阻塞系统调用,那么整个进程将会堵塞
任一时间只有一个线程可以访问内核,所以多个线程不能并行运行在多处理核系统上。
一对一模型:
映射每个用户线程到一个内核线程。该模型
优点:
在一个线程执行阻塞系统调用时,能够允许另一个线程继续执行,所以它提供了比多对一模型更好的并发功能。
允许多个线程并行运行在多处理器系统上。
缺点:
创建内核线程的开销会影响应用程序的性能,所以这种模型的大多数实现限制了系统支持的线程数量。
linux,windows操作系统家族都实现了一对一模型。
多对多模型:
多对多模型多路复用多个用户级线程到同样数量或更少数量的内核线程。
优点:
开发人员可以任意创建多的用户线程,相应内核线程能在多处理器系统上并发执行。
一个线程执行阻塞系统调用时,线程可以调度到另一个线程来执行
网友评论