关于在if语句中使用critical的OpenMP简单问题

yasaka 2011-12-12 08:46:51
请问,使用OpenMP,在if语句中用到critical,
if(depth == 0)
{
#pragma omp critical
InsertHashTable(...);
}
这样写好,还是
#pragma omp critical
if(depth == 0)
{
InsertHashTable(...);
}
这样写好?
...全文
308 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yasaka 2011-12-25
  • 打赏
  • 举报
回复
depth的值不会发生变化,如果发生变化,我肯定会在InsertHashTable对depth作判断并加锁。不过还是谢谢你了。
Intel_Shenghong 2011-12-19
  • 打赏
  • 举报
回复
如果你的depth变量在InsertHashTable()操作之后不会发生变化,那么,我觉得你这里的两种写法本质上差不多,应该没有谁比谁更好的问题。
如果你的depth变量在InsertHashTable()之后会发生变化(比如表示你的哈希表的深度等,Insert后变化,那么两种写法应该都不是你想要的,在Insert之后要获取一下depth的值。由于你这里的代码片段看不出你的depth是什么含义,也不知道你要实现的功能,所以如果只是从这段代码来看,我觉得没有谁比谁好的问题,都是一样的。critical只是一个类似临界区的概念,得根据你的整体的代码和你希望的结果来分析,而且或许需要考虑“对不对”的问题,而不是“好不好”的问题。

566

社区成员

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

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