[問題] OpenMP的parallel for
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC 4.4.5
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
omp.h
問題(Question):
我其實是想平行處理一個job queue,就是對一個queue能有寫入與取出的動作,
每個thread都可以取出裡面的資料並且可能放新的資料進queue
似乎是個很精典的問題
但用這關鍵字目前一直沒找到想要的資料... 所以寫了一個小測試程式來試,結果也失敗
下面是我的程式碼:
vector<unsigned> test_buffer;
test_buffer.push_back(20);
test_buffer.push_back(30);
#pragma omp parallel for
for( unsigned i=0; i<test_buffer.size(); ++i )
{
printf( "%u\n", test_buffer[i] );
if( i == 0 )
test_buffer.push_back(10);
}
希望能印出3個數字20, 30, 10;可是如果用上面的寫法只會得到20, 30
看起來OpenMP切割完工作後就不會再去檢查test_buffer的大小...
不知道有沒有什麼簡單的方法可以解決這問題?
(還是說必須要用到像pthread的condition variable之類的方法)
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.189
→
08/05 01:00, , 1F
08/05 01:00, 1F
推
08/05 08:37, , 2F
08/05 08:37, 2F
→
08/05 10:53, , 3F
08/05 10:53, 3F
→
08/05 11:07, , 4F
08/05 11:07, 4F
→
08/05 11:23, , 5F
08/05 11:23, 5F
推
08/05 11:53, , 6F
08/05 11:53, 6F
→
08/05 13:23, , 7F
08/05 13:23, 7F
→
08/05 13:47, , 8F
08/05 13:47, 8F
→
08/05 13:47, , 9F
08/05 13:47, 9F
→
08/05 14:02, , 10F
08/05 14:02, 10F
→
08/05 14:07, , 11F
08/05 14:07, 11F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章