什么是多线程模型?


用户级可用的线程称为用户线程。内核级可用的线程称为内核线程。用户线程在内核之上得到支持,并在没有内核支持的情况下进行管理,而内核线程则由操作系统直接支持和管理。

多线程模型的类型

多线程模型的不同类型如下:

多对一模型

它将多个用户线程映射到一个内核线程。线程管理基于用户空间中的线程库,因此它效率很高,但如果线程进行阻塞系统调用,则整个进程将被阻塞。

因此,一次只能有一个线程访问内核空间,多个线程无法在多处理器上并行运行。

多对一模型的示意图如下:

一对一模型

它将每个用户线程映射到一个内核线程。通过允许另一个线程在某个线程进行阻塞系统调用时运行,它提供了比多对一模型更高的并发性。它允许多个线程在多处理器上并行运行。

此模型的缺点是创建用户线程需要创建相应的内核线程,因此创建内核线程的开销可能会影响应用程序的性能。

示例包括 Linux 和 Windows。

一对一模型的示意图如下:

多对多模型

它将多个用户级线程多路复用到较少或相同数量的内核线程。内核线程的数量可能特定于某个特定应用程序。多对一模型允许开发人员创建任意数量的用户线程,并且不会获得真正的并发性,因为内核一次只能调度一个线程。

而一对一模型允许更大的并发性,但开发人员不会使用应用程序创建许多线程。

因此,最终多对多模型克服了所有这些问题。在这里,开发人员可以根据需要创建任意数量的用户线程,并且相应的内核线程可以在多处理器上并行运行。当某个线程执行阻塞系统调用时,内核可以调度另一个线程执行。

多对多模型的示意图如下:

更新于:2021-11-30

452 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.