友人同士のベット。 sum変数はグローバルとして定義されています。 となり、ループ1..100で実行される2つのスレッドがあり、ループごとに合計が1ずつ増加します。演算子++(接頭辞)スレッド付き
何が印刷されますか? "sum ="?
int sum = 0;
void func(){
for (int i=0 ; i<= 100; i++){
sum++;
}
}
int main(){
t1 = Thread(func);
t2 = Thread(func);
t1.start();
t2.start();
t1.join();
t2.join();
cout << "sum = " << sum;
return 0;
}
何かが起こる可能性があります。好奇心の疎かに、私はこのプログラムを修正しました。これは、UB - http://stackoverflow.com/questions/37325524/does-integer-overflow-cause-undefined-behavior-because-of-memory-corruption/37325854#37325854 –
です。 C++ 11と私は最初の結果として "202"を持っていました。これは、範囲を考える誰もが100-200が間違っていることを意味します。考えられる理由としては、コードをよく見てください;)しかし、UBのままです。 – stefaanv
タイトルは** prefix ** operator ++を参照していますが、コードは** postfix **を使用しています。結果に影響するものではない... –