为服务器体系结构设计了一个模块化的委托调度器
本文关键字:模块化 一个 调度 服务器 结构设计 | 更新日期: 2023-09-27 18:00:03
关于基于事件的循环的自变量,已经说了很多,实现了Thread
和Task<T>
之间的并行性和差异性。我想报
任务和线程之间的区别是什么?
这清楚地解释了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#编写服务器的其余部分(因为这是我目前的主要开发语言)。
我希望我足够清楚(对不起,英语不是我的主要语言)。
在我了解了反应式扩展的奇妙世界之后,我总是向所有想对复杂事件处理做点什么的人推荐它们。这里对这项技术也有很好的介绍。我想它会对你的需要很有用。