像Node.js/V8一样的.NET线程?

Bra*_*rad 5 .net c# multithreading thread-safety threadpool

我已经离开了.NET桌面编程一段时间,同时喝了Node.js koolaid.Node.js的某些部分我觉得很容易使用.特别是,我喜欢线程模型的简单性,并且我可以获得多线程应用程序的一些好处,同时只编写代码来跟踪单个线程.

现在,我需要在.NET中编写一个多线程应用程序,我想到我没有理由不能使用用于构建Node.js应用程序的类似线程模型.特别是,我想:

  • 使用回调参数调用长时间运行的函数.(该函数将在池中的线​​程上执行.也许在新线程上调用函数的简单包装函数就足够了吗?)
  • 让那些回调函数调用在"主"线程上运行以进行处理
  • 保持此"主"线程访问的所有对象的自动同步,因此锁定不是问题

这个线程模型的这种框架是否已经存在于.NET应用程序中?如果没有,.NET的部分是否已经支持或处理我正在寻求的一些功能?

Nig*_*ter 2

我会推荐TPL。Here\xe2\x80\x99s 是其工作原理的示例

\n\n
Void Work()\n{\n    Task<string> ts = Get();\n    ts.ContinueWith(t =>\n        {\n        string result = t.Result;\n        Console.WriteLine(result);\n        });\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

取消、使用不同调度程序进行错误处理等都有多种可能性。在 .Net 4.5 中,您可以使用 wait

\n\n
async void Work()\n{ \n    Task<string> ts = Get(); \n    string result = await ts; \n    Console.WriteLine(result); \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里,编译器查看标记为异步的方法,并添加一大堆线程安全的健壮任务同步代码,同时保持代码可读。

\n