c++ pragma omp critical(name)

c++ pragma omp critical(name)

本文关键字:name critical pragma omp c++      更新时间:2023-10-16

想象一下,我有一个包含关键区域的类方法:

class A{
    public:
        A(){};
        method(){
            #pragma omp critical(name)
                { //do something }
        }
}

现在我有两个A的实例,即A a1A a2。行为是什么CCD_ 4和CCD_?{//do something}能否在同时?

最后,我想禁止在上同时调用{//do something}相同的实例,但允许在上同时调用{//do something}不同的实例。

对象的所有实例的关键部分都是相同的——一次只能进入一个线程。

要允许不同的实例分别管理访问,请使用实例拥有的互斥对象。您可以使用omp_init_lock()和其他omp_xxx_lock()函数、std::mutex或其他互斥实现。