我對openmp很新,遇到這樣的問題。cout命令的OpenMP並行
#pragma omp parallel for
for (int i = 0; i < 10; ++i) {
if (i == 0)
for (int j = 0; j < 100000000; ++j); // Create a delay for i = 0.
cout << i << flush;
}
我預計0
應該是打印出來的最後一個整數,因爲有一個延遲。但是,實際產出總是隨機的。
這是由某種編譯器優化造成的嗎?或者我誤解了parallel for
?
我有版本
#define _OPENMP 201307
感謝。
除了別的,編譯器可能已經優化了「延遲」。如果你想要一個適當的延遲使用類似於http://en.cppreference.com/w/cpp/thread/sleep_for –
此外代碼似乎添加了i == 0的所謂延遲,而不是我== 1. –