标签:内核线程 隐式 复用 伸缩性 image 优点 请求 多个 多路复用
每个线程是cpu使用的一个基本单元,它包括线程ID、程序计数器、寄存器组和堆栈。它与同一进程的其他线程共享代码段、数据段和其他操作系统资源。
多线程编程的优点:响应性、资源共享、经济、可伸缩性。
对于单核系统,并发仅意味着线程随着时间交替执行,因为处理核只能同一时间执行单个线程。
对于多核系统,并发表示线程能够并行运行,因为系统可以给每个核分配一个单独的线程。
并行性和并发性的区别:
并行系统可以同时执行多个任务,并发系统支持多个任务,允许所有任务都取得进展。没有并行,并发也是可能的。
通过用户线程和内核线程来提供线程支持。用户线程位于内核线程之上,它的管理无需内核支持,而内核线程由操作系统来直接支持与管理。
映射多个用户线程到一个内核线程。
线程管理由用户控件的线程库来完成,因此效率高。但一个线程执行阻塞系统调用,那么整个进程将会阻塞。任一时间只有一个线程可以访问内核,所以多个线程不能并行运行在多处理核系统上。
映射每个用户线程到一个内核线程。
一个线程执行阻塞系统时,允许另一个线程继续执行,同时也允许多线程并行运行在多核系统上。唯一的缺点是创建一个用户线程就要创建一个内核线程,由于创建内核线程的开销会影响应用程序的性能,所以这种模型的大多数限制了系统支持的线程数量。
多路复用多个用户线程到同样数量或更少的内核线程。
可以创建任意多的用户线程,并且在多核系统上并行执行。当一个线程执行阻塞系统调用时,内核可以调度另一个线程来执行。
线程库为程序员提供创建和管理线程的API。
将多线程的创建和管理交给编译器和运行时库来完成,这种策略叫隐式线程。
思想:在进程开始时创建一定数量的线程,并且加到池中等待工作,当收到请求时,会唤醒池中的一个可用线程,一旦线程完成了任务,它会返回池中等待工作。如果迟中没有可用线程,那么会等待直到有空线程为止。
标签:内核线程 隐式 复用 伸缩性 image 优点 请求 多个 多路复用
原文地址:https://www.cnblogs.com/astonc/p/12150815.html