用户级线程的用途是什么?我读过文章说用户级线程比内核级线程更快。用户级线程是非抢占式的,阻塞一个用户级线程会阻塞进程中的所有其他用户级线程。
这意味着不存在一个用户级线程正在执行IO而另一个用户级线程正在执行的情况。此外,由于用户级线程可以控制,因此用户级线程也不能用于GUI。
问题是:用户级线程如何比顺序进程更好?
答案 0 :(得分:3)
您通常将用户级线程与事件循环一起使用,以便其他用户级线程可以在等待数据时继续执行:线程调度程序轮询已注册的文件描述符以便在线程生成时准备就绪,并且通常会优先考虑输入就绪的线程。同时,非自动产量有一个很大的优势:你通常不必担心并发访问数据结构(除非程序员是愚蠢的,并且在相对于其他线程应该是原子操作的中间产生无偿的产生)。这意味着对同步和锁定的需求(通常不需要)较少,这就是用户级线程经常赢得内核线程的原因:开销要低得多。当需要同步 时,它通常比内核线程便宜。
答案 1 :(得分:2)
一个可能的好处:设计/代码组织。通过使用Thread构造,我们非常清楚独立的处理过程以及它们需要交互的位置。