.NET中的绿色线程



绿色线程是在Erlang中引入的,可能所有基于它的语言都知道它们,也在go(gorutines)中。然后他们就被除锈了。

我的问题:

  • 如何在.NET中实现绿色线程?是否存在一些阻止当前.NET运行时实现它们的注意事项
  • 就性能而言,这是否合理?我们有一个非常轻量级的任务,在不久的将来,我们甚至会有ValueType任务(更适合某些场景)

如何在.NET中实现绿色线程?是否存在一些阻止当前.NET运行时实现它们的注意事项?

在.NET运行时中,通过在操作系统线程之上分层虚拟线程,并处理所有副作用/利基情况(持久化堆栈帧、处理亲和性和批量更多);它最近已经在Java中实现,.NET中的关键人员一直在研究它

就性能而言,这是否合理?我们有一个非常轻量级的任务,在不久的将来,我们甚至会有ValueType任务(更适合某些场景)。。。

这是一个不经过实验就很难回答的问题;绿色线程的优点是,它可以同时达到的代码;但就风险/复杂性而言,这也是一个缺点。async/await中涉及的机制并不是微不足道的,所以如果可以忽略它:太好了!但在某些方面,它只是被移到,尽管它被移到了可以进行大量优化的专用代码中。但就像所有的性能问题一样,答案都在数字中,没有实验你就无法得到数字。

这是非常古老但值得指出的:F#通过MailboxProcessor内置了轻量级用户模式线程。

在计算机编程中,绿色线程是由运行库或虚拟机(VM)调度的线程,而不是由底层操作系统本地调度的线程使用NET Framework编写的托管线程将按框架进行调度,但无论是何种情况,Windows操作系统都将在其下运行并将线程附加到CPU(因为NET需要Windows)。

相关内容

  • 没有找到相关文章

最新更新