1

次のようなコードがあるとします。

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 を使用している場合)、答えは変わりますか?

4

1 に答える 1