1

Linux Tutorial Posix Threadsの最初の例を実行しようとしました。それが私が持っているものです:

[alex@Allok 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]
[alex@Allok c_c++]$ ./a.out 
Thread 2 
Thread 1 
Thread 1 returns: 0
Thread 2 returns: 0

問題は、ソースが言うように出力が得られることを期待していたことです:

Thread 1
Thread 2
Thread 1 returns: 0
Thread 2 returns: 0

なぜそれが起こるのかわかりません。誰でも私を助けることができますか?

[alex@Allok 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
4

1 に答える 1

8

定義上、スレッドは非同期で実行されます (すべて OS スケジューラの気まぐれです)。明示的に同期メカニズムを使用しない限り、それらが互いにどのように実行されるかについては何も推測できません。

于 2012-04-28T14:18:50.043 に答える