イベントベースのループの引数については多くのことが言われており、 と の間の並列性と違いを実現していThread
ますTask<T>
。引用したい
Task<T>
これは、 aがどのように約束であり、スレッドがそれを実現するために使用される手段の 1 つである可能性があるかを明確に説明しています。
この他の質問は、代わりに導入の最初のポイントに対処します
.NET で C# を使用して、マルチスレッドを使用せずにイベント ベースの非同期パターンを実現することは可能ですか?
ここで質問です。特定のイベントが発生したときにデリゲートを呼び出すことができる、再利用可能な.NET インフラストラクチャ型を設計する方法を考えています。もちろん、2 番目の質問で提供されたすべての参照を評価しましたが、さらに調査する必要があると感じています。
私は次のようなことを達成したいと思います:
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# でコーディングすることも検討しました (現時点では C# が主要な開発言語であるため)。
私が十分に明確であったことを願っています (申し訳ありませんが、英語は私の第一言語ではありません)。