社区
Linux/Unix社区
帖子详情
多线程锁的问题
weirancg
2017-07-10 02:54:55
场景:线程1、线程2、布尔变量b。线程1和线程2都会读写布尔变量b,然后通过判断其真假,进行一些操作。
在线程1和线程2中,给b赋值,不是0,就是1:
b = 0;
……
b = 1;
对b进行判断也采用这种形式:
if(b == 0)
{
//dosomething
}
……
if(b == 1)
{
//dosomething
}
这样用是否可以不用加锁?
...全文
329
9
打赏
收藏
多线程锁的问题
场景:线程1、线程2、布尔变量b。线程1和线程2都会读写布尔变量b,然后通过判断其真假,进行一些操作。 在线程1和线程2中,给b赋值,不是0,就是1: b = 0; …… b = 1; 对b进行判断也采用这种形式: if(b == 0) { //dosomething } …… if(b == 1) { //dosomething } 这样用是否可以不用加锁?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
老马何以识途
2017-07-14
打赏
举报
回复
双线程的简单场景应该可以不加锁,看描述你也不需要两个线程互斥运行。
weirancg
2017-07-11
打赏
举报
回复
谢谢各位回复 @zhxianbin 实际编程时,我会用宏代替==,不会出现=和==混淆的问题。 对的,是有切换过程。 正常情况下,多线程是要用锁来保护全局变量的,但是我所描述的场景,只会对布尔变量b为-或者1进行处理,如果b为其他值,是会忽略的。我所疑惑的是:线程1正在改变b的值(给b赋0或1),线程2正好读写b(写的话,也是赋0或1),会不会使b有其他值出现,即不是0和1?如果没有其他值的出现,则整个逻辑应该没有影响,如果有,则这种情况程序不作处理,相当于丢失了某种状态。
zhxianbin
2017-07-11
打赏
举报
回复
http://www.cnblogs.com/life2refuel/p/5024289.html
zhxianbin
2017-07-11
打赏
举报
回复
c 里面的 bool 就是 int 吧 另外,楼主的代码是不是要 这样: if(0 == b) { //dosomething b = 1; } 有这样一个切换过程吧?
zhxianbin
2017-07-11
打赏
举报
回复
是不是要 if(0 == b) { //dosomething b = 1; } 这整个过程中 b 都不被改变
LubinLew
2017-07-10
打赏
举报
回复
引用 3 楼 zhxianbin 的回复:
volatile 也要加锁,volatile 避免 cache 和 内存不一致,但不能解决访问冲突吧
一个布尔变量的赋值过程是原子性的 所以可以不用加锁
zhxianbin
2017-07-10
打赏
举报
回复
volatile 也要加锁,volatile 避免 cache 和 内存不一致,但不能解决访问冲突吧
ipqtjmqj
2017-07-10
打赏
举报
回复
声明成volatile就不用加锁了
zhxianbin
2017-07-10
打赏
举报
回复
不行,还是要加锁的
Python-多线程精讲教程
Python多线程编程精讲视频教程,该课程共包含24课时,课程内容涵盖了多线程所有知识点,主线程、线程冲突、互斥锁、死锁、线程通信、高级线程调度、TLS线程独立存储等。
Java多线程安全
问题
和锁
多线程安全
问题
和锁 文章目录多线程安全
问题
和锁线程在jvm中的特点锁的出现synchronized 关键字-监视器锁monitor lock死锁的产生和避免 什么是线程安全
问题
? 当多个线程同时操作同一个数据是,可能会出现数据不一样...
Java多线程(四)
线程锁
Java多线程(四)
线程锁
超卖
问题
解决方案(一种多线程安全
问题
) 乐观锁、悲观锁
超卖
问题
是典型的多线程安全
问题
,针对这一
问题
的常见解决方案就是加锁:认为线程安全
问题
一定会发生,因此在操作数据之前先获取锁,确保线程串行执行。例如Synchronized、Lock都属于悲观锁。认为线程安全
问题
不一定...
【多线程】锁机制详解
在多线程环境下,为了让多线程安全地访问和使用共享变量,必须引入锁机制。锁机制即当一个线程持有锁后,其他线程只能进行等待,直到持有锁的线程释放锁,再次重新竞争锁。 1.2 三种锁的大类型 锁大致可以分为...
Linux/Unix社区
23,124
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章