首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.NET中的Erlang型轻量化工艺

.NET中的Erlang型轻量化工艺
EN

Stack Overflow用户
提问于 2010-04-12 08:40:19
回答 5查看 4.1K关注 0票数 6

有没有办法在.NET中实现Erlang风格的轻量级过程?

我发现了一些实现Erlang消息传递模型(参与者模型)的项目。例如,。但是我没有发现任何关于轻量级进程实现的信息。我指的是在一个OS线程或OS进程的上下文中运行的多个进程。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-24 05:43:23

我想F# MailboxProcessor就是你要找的。使用MailboxProcessor,您可以在一个.NET进程中定义数万个代理,就像您可以在Erlang中生成数万个轻量级进程一样。

唐·西姆的“MSDN员额”是一个很好的介绍。

如果您是从Erlang背景来到.NET的,请记住,您将丢失许多OTP的好东西(主管、位置透明度、mnesia、.)。

票数 11
EN

Stack Overflow用户

发布于 2010-04-12 18:35:53

CLR可以托管,并公开主机实现自己的任务抽象的机制。理论上,它们可以是线程、光纤、LWPs -只要主机实现必要的 接口就可以了。

要做对的事有点困难。MS尝试了一下,以便在Server光纤模式下承载CLR。

在最后一刻,有一些压力缺陷,所以他们停止了插头根据乔·达菲迪诺·维兰 (谁运行有关编写自定义CLR主机的系列文章,该主机在他的博客上实现了自己的任务抽象(使用光纤)。)。

现在还缺少一些管道-- ICLRTask::SwitchOut() --即使一个人绕过了它,在压力测试迭代中碰到MS的同样的bug也可能会困扰着冒险的灵魂。

假设有一段时间,所有的问题都以某种方式解决了,并且整个运行时都准备在光纤、LWP等上运行。仍然存在P/Invoke的问题,它可能会调用阻塞操作。没有内核支持,这种调度是很难做到的。

这在Windows7和Windows2008Server R2的64位版本中得到了解决。现在,如果调用阻塞在内核中,用户模式调度可以将控制权返回给用户模式(而不是内核模式)调度器。此外,这些用户模式调度线程是具有自己的TLS的真正线程。这些都是很大的改进,并使许多光纤模式头痛消失。

现在,利用UMS并发运行时中是可供C++使用,是C运行时库的一部分

后者意味着您可以在2010中开箱即用。

票数 7
EN

Stack Overflow用户

发布于 2010-04-13 06:52:17

你看过雷朗了吗?我只读到它,但我没有用它做任何事,但.

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2620757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档