public volatile long shared;
and assume further that thread t1 is trying to assign value v1 to shared while t2
is trying to assign it value v2. Is it guaranteed that shared will wind up with either v1
or v2 when the threads finish? Explain.
题目是说看上面那个code,Thread 1 试着给他赋值 v1,Thread 2也试着给他赋值 v2,那两个线程运行结束后,shared 值是不是一定是v1或者v2,为什么?
volatile 关键字的一个题目
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 千山鸟飞绝万径人踪灭 2018-03-14 05:04关注
volatile 关键字确保在编译的时候, 变量不存在任何拷贝, 永远都是取实际的内容。这种情况尤其在中断上下文或者是操作寄存器(和cache一致性有关)时候
一定要使用,否则可能读到的数值是假的或者说没有被更新。两个线程, 在执行原子操作的条件下, 确定的说, 一定是 v1 或者 v2。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 用twincat控制!
- ¥15 请问一下这个运行结果是怎么来的
- ¥15 单通道放大电路的工作原理
- ¥30 YOLO检测微调结果p为1
- ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
- ¥15 DS18B20内部ADC模数转换器
- ¥15 做个有关计算的小程序
- ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
- ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
- ¥15 setInterval 页面闪烁,怎么解决