+ -
当前位置:首页 → 问答吧 → 关于在if语句中使用critical的OpenMP简单问题

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

时间:2011-12-12

来源:互联网

请问,使用OpenMP,在if语句中用到critical,
if(depth == 0)
{
  #pragma omp critical
  InsertHashTable(...);
}
这样写好,还是
#pragma omp critical
if(depth == 0)
{
  InsertHashTable(...);
}
这样写好?

作者: yasaka   发布时间: 2011-12-12

如果你的depth变量在InsertHashTable()操作之后不会发生变化,那么,我觉得你这里的两种写法本质上差不多,应该没有谁比谁更好的问题。
如果你的depth变量在InsertHashTable()之后会发生变化(比如表示你的哈希表的深度等,Insert后变化,那么两种写法应该都不是你想要的,在Insert之后要获取一下depth的值。由于你这里的代码片段看不出你的depth是什么含义,也不知道你要实现的功能,所以如果只是从这段代码来看,我觉得没有谁比谁好的问题,都是一样的。critical只是一个类似临界区的概念,得根据你的整体的代码和你希望的结果来分析,而且或许需要考虑“对不对”的问题,而不是“好不好”的问题。

作者: Intel_Shenghong   发布时间: 2011-12-19

热门下载

更多