加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

c++线程同步-----基于mutex

(2024-10-01 11:14:43)
分类: 接口类的哈


引入锁机制
#include
 mutex mymutex;

上锁
mymutex.lock();
counter++;
mymutex.unlock();
c++线程同步-----基于mutex ——————————

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;

}


c++线程同步-----基于mutex保证了 counter  输出 是3000000,不然两个线程分别可能同时 进行 counter ++ ,导致数据不到3000000

————————————————————————————————

c++线程同步-----基于mutex c++  线程同步  有哪几种? mutex 是第几种?聪明来一波
 
在 C++ 中,线程同步可以通过多种机制实现,每种机制适用于不同的情况和需求。以下是一些常用的线程同步技术:

互斥量 (Mutex):用于控制多个线程对共享资源的访问,确保每次只有一个线程可以访问资源。std::mutex是 C++ 标准库中提供的一个基本的互斥量实现。

条件变量 (Condition Variable):用于在某些条件下阻塞一个或多个线程,直到收到其他线程的通知。std::condition_variable常与互斥量配合使用,用于复杂的线程间协调。

信号量 (Semaphore):用于控制对共享资源的有限数量的访问,可以允许多个线程同时访问资源,但是总数量受限。

读写锁 (Read-Write Locks):允许多个读者同时读取共享数据,但写入时必须独占访问。在 C++ 中,可以通过 std::shared_mutex 实现。

原子操作 (Atomic Operations):使用特定的硬件指令来保证操作的原子性,这种方式通常用于简单的变量更新,无需使用互斥量。

屏障 (Barriers):用于同步多个线程,让它们在继续执行之前都到达某个点。

mutex就是这些同步机制中的第一种。它是最基本的同步机制之一,通常用于保护简单的共享数据或资源不被并发修改导致的问题。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有