gpt4 book ai didi

c++ - 在 C++ OpenMP 中为每个线程定义一个优先级队列

转载 作者:行者123 更新时间:2023-11-30 02:26:53 26 4
gpt4 key购买 nike

我在 OpenMP 中并行化一个 for 循环,我试图为每个线程创建一个优先级队列,这样我就可以更新与线程对应的优先级队列,所以我正在尝试这样的事情:

#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
}

}

这可能吗?

最佳答案

您需要一组优先级队列,因为您将在并行 OpenMP 部分中拥有多个线程:

 // I need a priority queue per thread
std::vector<std::priority_queue<int>> q_per_thread(10);

# pragma omp parallel for num_threads(10)
for(int i = 0; i < 100; i++){
// push i to the queue corresponding to the thread
q_per_thread[omp_get_thread_num()].push(i);
}

编辑:修复了它

关于c++ - 在 C++ OpenMP 中为每个线程定义一个优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42305525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com