C++多线程编程场景(原子操作 + 生产者消费者模式)

线程的通讯问题实际上可以等价为多个线程如何用好共享内存的问题,也就是说一个线程通过修改共享内存中的一个变量,另一个线程就可以通过某种规则得到这个变动,作出相对应的动作。

所以,多线程的通讯方式就可以看成是使用共享内存的方式。

而控制共享内容的有序利用,主要的技术手段就是锁。

锁相关的内容,可以参考前面的一篇文章:
std库锁机制的使用

在锁机制的基础上,用于多线程的通讯方式还有一些具体的使用方式。

多线程间简单的原子操作

在多线程的使用场景中,有一些比较简单的操作,比如多个线程对一个变量进行简单的操作,比如bool标志位置位,余额的加减乘除之类,这样就不需要用到上面的比较复杂的代码来进行多线程的同步和协调。

在C++的std库中,有一个原子操作类可以直接实现,atomic。

因为atomic在库的内部是保证了一次操作的原子性,所以这个操作不能太复杂,一般来说最好是对一些基本类型做一些基本操作。

#include <iostream>
#include <thread>
#include <atomic>

std::atomic<int> counter(0);

void increment() {
    for (int i = 0; i < 1000; ++i) {
        cou
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新兴AI民工

码字不易,各位看客随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值