次のようなコードがあるとします。
main() {
start thread;
put data in task queue;
do some stuff
wait for data in result queue;
printf ("main got result\n");
fflush(stdout);
}
thread() {
while (!done) {
wait for data in task queue;
printf ("thread finished processing\n");
fflush(stdout);
put data in result queue;
}
}
スレッド セーフなデータ キューが正常に機能している場合、次のような出力を取得できますか?
main got result
thread finished processing
そのように stdio を並べ替えることができますか、それとも私の「スレッドセーフ」キューがそうでないことの確かな兆候ですか?
上記のコードで、C++ でコンパイルし、main の "do some stuff" セクションで iostreams を使用している場合 (ただし、示されている場所ではまだ printf を使用している場合)、答えは変わりますか?