关于基于事件的循环的论点已经说了很多,实现并行性和和之间的Thread
区别Task<T>
。我想引用
这清楚地解释了 a 如何Task<T>
是一个承诺,而线程可能是用来实现它的手段之一。
这个另一个问题代替了介绍的第一点
.NET 中是否可以使用 C# 实现基于事件的异步模式而无需多线程?
问题来了。我正在考虑如何设计一个可重用的.NET 基础结构类型,当特定事件发生时可以调用委托。当然,我已经评估了第二个问题提供的所有参考资料,但我觉得我仍然需要进行更多调查。
我想实现类似的目标:
var sched = new Scheduler(new DefaultSchedulingStrategy());
var listnr = new TcpListener();
sched.DefineEventSource<Socket>(listnr.AcceptSocketAsync);
shed.OnEvent(
(socket) = {
// handling socket here
});
我知道这似乎非常接近Task.Factory.FromAsync<T>
。无论如何,我在这里想要实现的也是能够改变不同工作负载的调度策略,并尝试尽可能多地抽象激活事件的逻辑。
我还考虑过用 F# 编写一个简单的调度程序(例如基于代理),创建一个 C# 友好的可重用库,然后用 C# 编写服务器的其余部分(因为它是我目前的主要开发语言)。
我希望我足够清楚(抱歉,英语不是我的主要语言)。