在多线程中安全使用C++变量主要是通过使用互斥锁(mutex)来保护共享变量,避免多个线程同时对同一个变量进行读写操作而导致数据竞争和不确定性行为。以下是一些常见的方法来安全使用C++变量:
#include <mutex>
std::mutex mtx;
int sharedVar;
void safeUpdateSharedVar() {
std::lock_guard<std::mutex> lock(mtx);
sharedVar++;
}
#include <atomic>
std::atomic<int> atomicVar;
void safeUpdateAtomicVar() {
atomicVar++;
}
#include <shared_mutex>
std::shared_mutex s_mtx;
int sharedVar;
void readSharedVar() {
std::shared_lock<std::shared_mutex> lock(s_mtx);
// 读操作
}
void writeSharedVar() {
std::unique_lock<std::shared_mutex> lock(s_mtx);
// 写操作
}
通过以上方法,可以有效地避免多线程中对共享变量的竞争和不确定性行为,确保程序的正确性和稳定性。