我刚接触OpenMP才一天,问个很简单的问题,请大家不要笑话我

yasaka 2011-01-15 09:52:43
我在网上看到一篇文章,叫做《OpenMP与C++:事半功倍地获得多线程的好处》。
其中有一段话是这样的:

切记OpenMP指令同时影响线程组里的所有线程。因此下面的代码片段是非法的并且有未定义的运行时行为(崩溃,或者在特别情况下被挂起):
#pragma omp parallel
{
if(omp_get_thread_num() > 3)
{
#pragma omp single // 所有的线程可能都不能访问
x++;
}
}

我没看懂为何x++对所有的线程可能都没有执行。
谁帮我解答一下?
...全文
135 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yasaka 2011-01-23
  • 打赏
  • 举报
回复
测试了一下,在朋友的4核机器上,omp_get_thread_num() > 3这个条件是满足的啊。
yasaka 2011-01-16
  • 打赏
  • 举报
回复
晕,是不是太简单了没人回答……

566

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧