私は現在、マルチプレイヤー ゲームのサーバー側として機能する c# アプリケーションに取り組んでおり、マルチスレッドの問題をどのように処理する必要があるかについて少し確信が持てません。先に進む前に、私がこのトピックにまったく慣れていないことを言及しておく価値があるでしょう。
問題
サーバー側アプリケーションの要件の 1 つは、サーバーに接続しているピアに関する情報やその場所など、アプリケーション固有のデータを含める必要があることです。問題は、なんらかの形式のスレッドセーフなメカニズムがないと、2 つの要求が同じデータの読み取りと書き込みを行う可能性があることです。これは明らかに問題です。
問題を解決する
これまで、この問題を解決するために、すべてのリクエストをロック ブロック内にラップし、すべてのリクエストが順番に発生するようにして、データが一度に 1 つのピアによってのみ操作されるようにしていました。
最近、このトピックについていくつかの調査を行った後、ファイバーのアイデアと、「ファイバープール」を設定する方法を紹介されました。これにより、リクエストが確実に発生するようにする別の方法として、単一のファイバーにアクションをキューに入れることができますシリアル順で。
質問
スレッドとこれらのタイプのトピックに関する私の知識はかなり限られています。このトピックについてもっと知りたいです。特に、どちらのソリューションの長所と短所、そして最終的にどのルートを取るべきかを知りたい.
どんな助けでも大歓迎です。