线程的实现
线程库
线程库:线程库是提供创建和管理线程的API
线程库有两种实现方式:
- 在用户空间中提供一个没有内核支持的库。这种库的所有代码和数据结构都位于用户空间。这意味着,调用库内的一个函数只是导致了用户空间内的一个本地函数的调用,而不是系统调用。
- 由操作系统直接支持的内核级的一个库。对于这种情况,库内的代码和数据结构位于内核空间。调用库中的一个API函数通常会导致对内核的系统调用。
用户级线程(User-Level Thread)
用户级线程是通过用户空间的线程库创建和管理的,内核意识不到线程的存在
用户级实现的多线程,一次只能在一个CPU核心上运行,如果一个线程在运行过程中阻塞,那么整个进程进入阻塞态,即这个进程的所有线程都被阻塞
解决方法:jacket————把一个产生阻塞的系统调用转换为一个非阻塞的系统调用