は、次のC + 11のコードを検討します出力を得る:違い
A 27186
B 86970
C 1001961755
D 2001585903
これは期待されています。 A
とB
に到着するまでに最小限の時間がかかり、1秒間待ってからC
になり、残りの2秒間を待って(すでに経過した1秒間)D
になります。
のMACコンパイラは次のとおりです。
$ c++ --version
Apple LLVM version 8.0.0 (clang-800.0.38)
Target: x86_64-apple-darwin16.0.0
Thread model: posix
LinuxはLinuxの
結果、私はc++ -std=c++11 -pthread question.cc -o question
と同じコードをコンパイルして実行し、その結果得た:
A 32423
B 444340
C 1003635793
D 3006121895
Linuxのコンパイラを:
$ c++ --version
c++ (Debian 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
また、LinuxではLLVM C++コンパイラclang++
を試しました。同じ結果。
Q
はなぜC
とLinux上D
の間で完全に2秒の遅れがありますか?非同期タスクがバックグラウンドで実行されていないのでしょうか?間違ったコンパイルオプションを使用していますか?
gcc 6.2でLinuxで再現できません。 CからDまではさらに1秒かかる。 –
@SamVarshavchikコンパイラの違いは? – rityzmon
Linux 4.4.0-42でg ++ '5.4.0-6ubuntu1〜16.04.2'で再現できます。'strace question 'の出力をLinuxに投稿するのはどうですか? –