私のc++の知識の欠如を考慮して、私の意図を読んでみてください。私の貧弱な技術的な質問ではありません。
これは私のプログラムのバックボーンですhttps://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp
私はwebsocket++を使用してwebsocketサーバーを構築しています(そして、websocket ++は素晴らしいです。強くお勧めします)。ユーザーごとのデータスレッドを簡単に操作できます。実際には別のスレッドで操作する必要がないため、安全です。ただし、1つの関数スレッド(実行される可能性のある複数の反復を使用)で配列(vb、php、jsなどの弱い言語からのキャッチオール用語「配列」を使用します)に書き込めるようにしたいです。同時に)、1つ以上のスレッドで読み取ります。
例としてスタックを取り上げます。すべてのid
s(PRIMARY
すべての記事の列)を特定の方法で並べ替え、この場合は正味の投票で並べ替えてメモリに保持したい場合は、次のような関数があると思います。それ自体boost::thread
で、配列を並べ替えるためにサイトで投票が行われるたびに発生します。
ロックおよびブロックせずにこれを行うにはどうすればよいですか?別の配列が構築されている間にユーザーが古い配列から読み取ることは100%問題ありませんが、ユーザーの読み取りやスレッドの書き込みが失敗したりブロックされたりすることは絶対にありません。
ロックフリーアレイは存在しますか?そうでない場合は、一時的な配列に新しい配列を構築し、構築が完了したときにロックとブロックを行わずに実際の配列に書き込む方法はありますか?