c++线程同步-----基于mutex
(2024-10-01 11:14:43)| 分类: 接口类的哈 |
引入锁机制
#include
上锁
mymutex.lock();
counter++;
mymutex.unlock();
mutex.cpp
#include
#include
#include
using namespace std;
int counter = 0;
mutex mymutex;
void increment_count(int times) {
for (int i = 0; i <
times; ++i) {
mymutex.lock();
counter++;
mymutex.unlock();
}
}
int main() {
std::thread
t1(increment_count, 1000000);
std::thread
t2(increment_count, 2000000);
t1.join();
t2.join();
std::cout <<
"zuihou结果是" << counter << std::endl;
}
保证了
counter ————————————————————————————————
在 C++ 中,线程同步可以通过多种机制实现,每种机制适用于不同的情况和需求。以下是一些常用的线程同步技术:
互斥量 (Mutex):用于控制多个线程对共享资源的访问,确保每次只有一个线程可以访问资源。std::mutex是 C++
标准库中提供的一个基本的互斥量实现。
条件变量 (Condition
Variable):用于在某些条件下阻塞一个或多个线程,直到收到其他线程的通知。std::condition_variable常与互斥量配合使用,用于复杂的线程间协调。
信号量
(Semaphore):用于控制对共享资源的有限数量的访问,可以允许多个线程同时访问资源,但是总数量受限。
读写锁 (Read-Write Locks):允许多个读者同时读取共享数据,但写入时必须独占访问。在 C++ 中,可以通过
std::shared_mutex 实现。
原子操作 (Atomic
Operations):使用特定的硬件指令来保证操作的原子性,这种方式通常用于简单的变量更新,无需使用互斥量。
屏障 (Barriers):用于同步多个线程,让它们在继续执行之前都到达某个点。
mutex就是这些同步机制中的第一种。它是最基本的同步机制之一,通常用于保护简单的共享数据或资源不被并发修改导致的问题。

加载中…