gpt4 book ai didi

C++ pragma omp critical(名称)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:19:23 24 4
gpt4 key购买 nike

假设我有一个包含临界区的类方法:

class A{
public:
A(){};

method(){
#pragma omp critical(name)
{ //do something }
}
}

现在我有两个 A 实例,即。 A a1A a2。什么行为a1.method()a2.method() 的? {//do something} 可以在同一时间?

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

最佳答案

临界区对于对象的所有实例都是相同的——一次只有一个线程能够进入。

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

关于C++ pragma omp critical(名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28716014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com