想象一下,我有一个包含关键区域的类方法:
class A{
public:
A(){};
method(){
#pragma omp critical(name)
{ //do something }
}
}
现在,我有两个
A
实例,即。 A a1
和A a2
。行为是什么的
a1.method()
和a2.method()
吗? {//do something}
可以在同时 ?
最后,我想禁止同时调用
{//do something}
同一实例,但允许同时调用{//do something}
不同的实例。 最佳答案
对于对象的所有实例,关键部分都是相同的-一次只能进入一个线程。
要允许不同的实例分别管理访问,请使用实例拥有的互斥锁。您可以使用omp_init_lock()
和其他omp_xxx_lock()
函数std::mutex
或其他互斥量实现。
关于c++ - C++ Pragma OMP Critical(名称),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28716014/