什么是用户线程?

时间:2011-04-21 13:44:39

标签: multithreading language-agnostic terminology user-thread

什么是用户线程?下面的解释说它们是由用户空间管理的...请解释一下如何?

  

线程有时在用户空间库中实现,因此称为用户线程。内核不了解它们,因此它们在用户空间中进行管理和调度。

3 个答案:

答案 0 :(得分:4)

现在,每个现代服务器或桌面操作系统以及所有主流移动操作系统都有本机线程库,所以这个问题不再那么重要了。但基本上,在此之前,有一些库 - 最着名的是“绿色线程库” - 它实现了协同多任务线程作为用户库。 “协同多任务”部分是重要的部分:通常,只有当线程调用允许切换发生的某种方法(“睡眠”,“产量”等)时,这样的库才从一个线程切换到另一个线程。图书馆一般不能做抢先时间切片;这是必须在操作系统级别完成的事情。

答案 1 :(得分:0)

Symbian OS有一个Active Object框架,允许在单个线程中处理异步事件 http://en.wikipedia.org/wiki/Active_object_%28Symbian_OS%29

Windows也有光纤: http://msdn.microsoft.com/en-us/library/ms682661%28v=vs.85%29.aspx

答案 2 :(得分:0)

内核线程(也称为轻量级进程)由系统管理。它们提供了一些有趣的好处,主要的好处是可以在两个不同的处理器上安排两个线程,希望这会减少进程的执行时间。

然而,线程通常用作编程模型。一个典型的例子是一个多客户端Web服务器,它等待传入连接并同时与其连接的客户端交换数据。在这种情况下,程序员可能想要创建 lot 线程并在它们之间快速切换。系统线程不太适应这一点。内核线程的数量是有限的(少数未读),任何基本操作(创建销毁切换锁定)都很昂贵,因为它必须在内核空间中执行。

另一方面,用户线程可以使用用户库中的set_jmp()long_jmp()来实现。由于它们不涉及内核,因此应用程序可以非常有效地创建/销毁和切换用户线程。

正如欧内斯特所说,用户线程不再常见,但是存在可以利用这两个世界的混合解决方案。

http://en.wikipedia.org/wiki/Thread_(computer_science)#N:M_.28Hybrid_threading.29