在我的代码中,我使用一个简单的 int 变量(名为 counter)来同步 4 个线程。
这是我的代码片段:
int counter = 0;
#pragma omp parallel shared(counter) num_threads(4)
{
while(counter != thread_id){
// What should I put here?
}
// Actions needed to be performed 'in order'
counter++;
// The rest of the code
}
我面临的问题是,如果我使用 -O3 优化标志,则编译代码中的 while 循环“消失”......例如,如果我在循环中放置了 printf 行,则会发生 while 并且一切正常。 ..
我应该在我的 while 循环中放什么,这样 -O3 才不会影响它的行为?
- - 编辑 - -
抱歉缺少上下文......我需要创建在特定处理器上工作的线程团队,因为我正在使用 NUMA 系统,所以我需要“团队创建”部分,以便我可以使用处理器亲和性.. .请看这个相关的问题: Specific thread order in C using GCC and OMP