打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
多线程程序何时需要加锁

简单的说三条:

多人读,不需要

一读一写要加

多人写要加


常见错误

1读1写没事,读写的内存约多,越容易出事,因为不是原子操作

对int/int64/char型是原子操作, 可不加锁,   其实没人保证这一点的, 要不C++1x还出个原子模板类干什么


常用实例

vector的[]操作是安全的, 如一个线程里 buf[0]++, 另一个buf[1]--是安全的, 因为[]的实现是 start+n, 多线程操作符合多人只读条件


最后锁分为互斥(mutex)和自旋(spin)锁

前者,在第一个人锁住后, 第二个人进不去时会sleep, cpu可以去干别的

spin锁的话,第二个人会一直在门口等, cpu也一直占着,缺点显而易见, 有点是进去快, 效率高

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
英特尔? 软件网络博客 - 中文 ? 利用多核多线程进行程序优化
面试官:你觉得用了多线程可能会出现什么问题?
可重入、异步信号安全和线程安全(一)
编写安全的多线程C#程序
Java多线程编程-(1)-线程安全和锁Synchronized概念
c++ redis加锁(mutex)错误
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服