在 C++ 中,可以使用互斥量 (mutex) 来实现临界区的判断和保护。互斥量是一种同步原语,用于保护共享资源,只允许一个线程访问共享资源。

下面是一个使用互斥量实现临界区的示例代码:

#include <iostream>
#include <mutex>

std::mutex mtx;

void critical_section()
{
    // 加锁
    mtx.lock();

    // 临界区代码
    std::cout << 'This is critical section.' << std::endl;

    // 解锁
    mtx.unlock();
}

int main()
{
    // 多个线程同时调用临界区
    std::thread t1(critical_section);
    std::thread t2(critical_section);
    std::thread t3(critical_section);

    // 等待线程结束
    t1.join();
    t2.join();
    t3.join();

    return 0;
}

在上面的代码中,std::mutex 是一个互斥量对象,用于保护临界区。在 critical_section() 函数中,首先调用 mtx.lock() 加锁,然后执行临界区代码,最后调用 mtx.unlock() 解锁。这样可以保证在任意时刻只有一个线程可以访问临界区,从而避免竞争条件的问题。

C++ 临界区判断与互斥量实现

原文地址: https://www.cveoy.top/t/topic/kWcJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录