线程同步入门

1.什么是线程同步

线程同步是协调的意思。线程之间本身存在异步性,以不可预知的速度去推进程序的执行这就需要我们采用加锁等方式,使得线程按照我们想要的顺序去完成执行

假如线程A去完成事情A,之后线程B使用线程A的完成事情A的结果去完成事情B,否则就会程序出错。由于异步性,如果没有外加干涉,程序是很有可能出错的。那么当线程A开始进行事情A之前,我们就加一个锁,到线程B的时候,线程B发现锁并没有解开,就会阻塞直到线程A完成,这样就避免了程序出错。

2.什么时候需要线程同步

通常,多线程访问公共资源的时候就需要线程同步。举一个简单的例子,比如两个线程共享一个vector,其中一个线程在还在访问vector,另外一个线程对这个vector执行了clear()函数,那么程序就会出错了。(我最近就遇到这个问题

初学线程,然后就发现在C++里面,普通的map、vector、unordered_map等STL容器,都是线程不安全的,多线程同时读写就容易导致出错,所以特地来学习线程同步,可以立马运用到实际中,给我的STL容器加锁。

3.实现方式

实现线程同步的方式有互斥锁、条件变量、信号量、自旋锁、读写锁等,接下来我会按顺序一步步学习这方面的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值