什么是用户线程?



什么是用户线程?下面的解释说他们是由用户空间管理的…请解释一下怎么做?

线程有时在用户空间库中实现,因此称为用户线程。内核不知道它们,所以它们在用户空间中被管理和调度。

每个现代服务器或桌面操作系统,以及所有主要的移动操作系统,现在都有一个本地线程库,所以这个问题不再是非常相关的了。但基本上,在这种情况出现之前,有一些库——最著名的是"绿色线程库"——作为用户库实现了协作多任务线程。"协同多任务"部分是重要的部分:一般来说,这样的库只有在线程调用一些允许切换发生的方法("sleep","yield"等)时才能从一个线程切换到另一个线程。用户库通常不能做抢占式的时间切片;

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

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

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

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

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

正如Ernest所说,用户线程不再常见,但是存在一种混合解决方案,可以利用这两个世界的优势。

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

相关内容

  • 没有找到相关文章

最新更新