c++ - 如何使用 OpenMP 让线程以相反的顺序写入它们的数字?
问题描述
所以我有一个任务。我需要制作 8 个线程,让它们以相反的顺序写出它们的数字。我知道如何让它们以自然顺序书写,但对相反的顺序感到非常困惑。希望任何人都可以帮助我!
解决方案
我真的不明白你问的目的,但这有效
#include "omp.h"
#include <iostream>
using namespace std;
int main()
{
#pragma omp parallel
{
int nthreads = omp_get_num_threads();
for(int i=nthreads-1; i>=0; i--)
{
#pragma omp barrier
{
if(i==omp_get_thread_num())
{
#pragma omp critical
cout << "I am thread "<< i <<endl;
}
}
}
}
}
它输出 8 个线程
I am thread 7
I am thread 6
I am thread 5
I am thread 4
I am thread 3
I am thread 2
I am thread 1
I am thread 0
推荐阅读
- python - 如何分离元素?
- php - 通过 swiftmail 发送电子邮件时重复
- chromecast - 使用 Chrome Sender API 获取 Google Cast 队列项目
- mysql - MySQL Workbench 错误 1452 突然停止工作
- c# - 未找到 PWA 的清单 JSON 404?
- javascript - 打开模态时如何更新图像src
- c# - 右键单击按钮并将 PDF 文件另存为
- azure-logic-apps - 逻辑应用 - 在条件执行之前运行的操作
- r - R中的动画地理地图与gganimate
- flutter - Flutter 无法处理 VideoPlayerController