Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 用户级线程如何优于顺序进程?_Multithreading_Operating System_Process - Fatal编程技术网

Multithreading 用户级线程如何优于顺序进程?

Multithreading 用户级线程如何优于顺序进程?,multithreading,operating-system,process,Multithreading,Operating System,Process,用户级线程的用途是什么?我读过一些文章,说用户级线程比内核级线程快。用户级线程是非抢占式的,阻塞一个用户级线程会阻塞进程中的所有其他用户级线程 这意味着不可能存在一个用户级线程正在执行IO而另一个用户级线程正在执行的情况。此外,由于由用户级线程来产生控制,因此用户级线程也不能用于GUI 问题是:用户级线程如何比顺序进程更好?您通常将用户级线程与事件循环一起使用,这样其他用户级线程可以在等待数据时继续执行:线程调度程序在线程生成时轮询已注册的文件描述符以确定就绪状态,并且通常会对准备好输入的线程进

用户级线程的用途是什么?我读过一些文章,说用户级线程比内核级线程快。用户级线程是非抢占式的,阻塞一个用户级线程会阻塞进程中的所有其他用户级线程

这意味着不可能存在一个用户级线程正在执行IO而另一个用户级线程正在执行的情况。此外,由于由用户级线程来产生控制,因此用户级线程也不能用于GUI


问题是:用户级线程如何比顺序进程更好?

您通常将用户级线程与事件循环一起使用,这样其他用户级线程可以在等待数据时继续执行:线程调度程序在线程生成时轮询已注册的文件描述符以确定就绪状态,并且通常会对准备好输入的线程进行优先级排序。同时,非自动收益率有一个很大的优势:您通常不必担心对数据结构的并发访问(除非程序员是愚蠢的,无缘无故地屈服于对其他线程的原子操作)。这意味着对同步和锁定的需求更少(通常不需要),这就是为什么用户级线程通常胜过内核线程:开销更低。当需要同步时,它通常比使用内核线程便宜。

一个可能的好处是:设计/代码组织。通过使用线程构造,我们可以非常清楚地了解独立的处理部分以及它们需要交互的位置。

谢谢你的回答。你能通过一个例子详细说明这个“事件循环”吗?或者提供一个参考?是对用户空间和内核线程的一个不错的概述。非常感谢您的参考!