C++ 临界区判断与互斥量实现
在 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() 解锁。这样可以保证在任意时刻只有一个线程可以访问临界区,从而避免竞争条件的问题。
原文地址: https://www.cveoy.top/t/topic/kWcJ 著作权归作者所有。请勿转载和采集!