我在OpenMP中並行化一個for循環,我試圖爲每個線程創建一個優先級隊列,這樣我就可以更新對應於線程的優先級隊列,所以我嘗試了類似這樣的東西:在C++ OpenMP中爲每個線程定義一個優先級隊列
#include <queue>
#include <omp.h>
void test(){
// I need a priority queue per thread
// std::priority_queue<int> q_per_thread;
# pragma omp parallel for num_threads(10)
for(int i = 0; i < 100; i++){
// push i to the queue corresponding to the thread
}
}
這可能嗎?
在並行循環之後,你想對隊列中的數據做什麼? – Zulan
爲什麼每個線程*和*循環都有一個隊列?循環用於數據並行性,其中*不*必須*不必關心處理數據的線程。你不應該看*任務*並行或代理嗎? –