线程的实现分为两类:用户线程和内核线程,线程模型又分为3种:多对一,一对一,多对多
多对一
此处的多是指用户线程的多数,对应着操作系统内核空间的一个进程。
用户空间的线程由用户程序的线程库来创建控制。
优点:线程的管理由用户空间来实现,无需对内核进行调用,所以比较高效
缺点:如果一个用户线程调用内核服务阻塞了,那同个进程的其他线程则无法使用了,非常不适合并发操作。
一对一
用户线程和内核线程一一对应。
优点:有很高的并发能力
缺点:每创建一个用户线程,都需要创建一个内核线程与之对应,所以开销会非常大。
多对多
多个用户线程与之对应的一些(小于等于用户线程数)内核线程与之对应。
特点:拥有良好的并发性能,开销比一对一的模型也要小。