私はmmorpgでC++で欲しいと思っています。iveは現時点で5つのスレッドを持っています。もう1つは2つに分割したいのですが、mmorpgサーバーは、ベクトルは書くのにスレッドセーフではありません、私はそれを正しく行うことはできません。マルチスレッドでのCのmmorpg
スレッド間でベクトルを使用する代わりに、またはベクトル読み取り/書き込みマルチスレッドを安全にする方法があります。
Heres私はこのようなものの代替案を見つけようとします: 明らかにこれは実際のコードではありません。
//Thread1
//Load monster and send data to the player
globals::monstername[myid];//Myid = 1 for now -.-
senddata(globals::monstername[myid]);//Not the actual networking code, im just lazy.
//Thread2
//Create a monster and manage it
globals::monstername.push_back("FatBlobMonster");
//More managing code i cant be bothered inserting >.<
ありがとう、どうやって使うのですか? :) –
ご覧ください:http://en.cppreference.com/w/cpp/thread/lock –
これはうまく動作しません。あなたは配列全体をロックしているからです。だから、あなたは複数のスレッドを持つことができます - 彼らはベクトルにアクセスするためにお互いを待っています。したがって、ベクトルに対する操作は、単一のスレッドの場合と同じパフォーマンス特性を持ちます。 –