线程是进程中的控制流。

多线程进程包含在相同的地址空间上的多个不同的控制流。多线程的好处包括提高对用户的响应能力,在进程中共享资源,经济和可伸缩性因素,比如更高效地使用多个处理核心。

用户级线程是程序员可以看到的线程,内核不知道这些线程。操作系统内核支持和管理内核级线程。通常,用户级线程创建和管理的速度比内核线程快,因为不需要内核的干预。

有三种不同模型将用户线程和内核线程关联起来:

  • 多对一模型:将多个用户线程映射到一个内核线程上
  • 一对一模型:将每一个用户线程映射到一个内核线程上
  • 多对多模型:将多个用户线程多路复用到一个少量或者等量的内核线程上。

线程库为应用程序程序员提供了创建和管理线程的API。三个主要的线程库有共同的用途:POSIX Pthreads、Windows线程和Java线程。

除了使用库提供的API显式创建线程外,我们还可以使用隐式线程,其中线程的创建和管理被转移到编译器和运行时库中。隐式线程的策略包括线程池、Open MP和Grand Central Dispatch。

多线程编程为编程带来很大的挑战,包括fork()和exec()系统调用的语义。其他事项包括线程取消,信号处理,线程本地存储,和调度器激活。

results matching ""

    No results matching ""