线程的实现


线程库

线程库:线程库是提供创建和管理线程的API

线程库有两种实现方式:

  • 在用户空间中提供一个没有内核支持的库。这种库的所有代码和数据结构都位于用户空间。这意味着,调用库内的一个函数只是导致了用户空间内的一个本地函数的调用,而不是系统调用。
  • 由操作系统直接支持的内核级的一个库。对于这种情况,库内的代码和数据结构位于内核空间。调用库中的一个API函数通常会导致对内核的系统调用。

用户级线程(User-Level Thread)

用户级线程是通过用户空间的线程库创建和管理的,内核意识不到线程的存在

用户级实现的多线程,一次只能在一个CPU核心上运行,如果一个线程在运行过程中阻塞,那么整个进程进入阻塞态,即这个进程的所有线程都被阻塞

解决方法:jacket————把一个产生阻塞的系统调用转换为一个非阻塞的系统调用

内核级线程(Kernel-Level Thread)