volatile宣言されたQueueへのメッセージ挿入は、
N個のスレッドがEnqueue、1個のスレッドがDequeueして処理する場合には常に正常に動くのでしょうか。
ここでの正常とは、EnqueueしたものがQueueの中に格納される事を意図しています。
順番は問いません。
仮に"1"がキューに入った状態で、同時に"2","3"が2つのスレッドからひとつずつ入るとします。この場合に、2つのスレッドの処理の後、キューの中身が、("2","1")もしくは("3","1")となることはあり得ないでしょうか。
期待する結果は("3","2","1")、("2","3","1")のどちらかとなります。
volatileはスレッドに常に最新の値を参照させるもので、排他制御はされないと理解しています。なので不整合な結果が起こり得るのではと考えてはいます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。