1
Linux Tutorial Posix Threadsから最初の例を実行しようとしました。私が持っているものだ :C++でスレッドを実行する奇妙な順序
Thread 1
Thread 2
Thread 1 returns: 0
Thread 2 returns: 0
それがなぜ起こるか私は理解していない:
[[email protected] c_c++]$ g++ -lpthread from.cpp
from.cpp: In function ‘int main()’:
from.cpp:10:22: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
from.cpp:11:22: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
[[email protected] c_c++]$ ./a.out
Thread 2
Thread 1
Thread 1 returns: 0
Thread 2 returns: 0
問題は、ソースが言うように、私は、出力が期待ということです。誰でも助けてくれますか?
[[email protected] c_c++]$ uname -a
Linux Allok 3.3.2-1-ARCH #1 SMP PREEMPT Sat Apr 14 10:08:43 UTC 2012 i686 AMD Athlon(tm) II Neo K125 Processor AuthenticAMD GNU/Linux
なぜですか?一度並列処理をすると、特定の順序で何かが起こるような手順を踏んでいない限り、必要な順序で何かが起こります。 –
「スレッド1」と「スレッド2」の出力は、スレッドの作成を表すのではなく、スレッド関数のprintfの操作を表します。スレッドを作成したら、スレッドがプロセッサで時間を取得するタイミングを決定するのは、オペレーティングシステムによって異なります。 – veefu