1
我想並行化一些代碼,但我遇到(大概是啞巴)問題。下面的示例代碼返回「12」,但我期望「21」。OpenMP:爲什麼這些omp並行部分不能用多線程執行?
omp_get_max_threads()返回8,omp_get_num_threads()返回1,omp_get_thread_num()返回0,當我在這個塊的任何位置調用它們。我想我可以得出結論,它只是由主線程順序執行。
#include <omp.h>
#include <iostream>
#include <Windows.h>
using namespace std;
int main() {
#pragma omp parallel sections num_threads(2)
{
#pragma omp section
{ Sleep(200);
cout << "1"; }
#pragma omp section
{ cout << "2"; }
}
}
我在做什麼錯?我如何強制這些部分的並行處理?
對於上下文:我是從兩個USB 3.0相機流式傳輸數據,並從每個相繼調用圖像是如此緩慢,我失去了幀。我想基本上爲每臺相機設置一條線,不斷要求它的圖像。
This問題有一個類似的標題,但沒有幫助。我正在使用Visual Studio 2010.
您是否在項目設置中激活了omp支持,並且鏈接了lib? – ogni42
您是否嘗試過nowait關鍵字? – Soravux