给出两个线程执行计算的线程场景:
x = x + 1 where x is a shared variable
可能的结果是什么,并说明您的答案可能发生的原因。
这是我的操作系统手册中的教科书问题,我很好奇,如果我需要更多信息来回答这个问题,比如什么x也被初始化以及线程执行此命令的次数或者只执行一次。我最初的答案是它可能是两个可能的答案,具体取决于线程执行OS的顺序。
答案 0 :(得分:1)
这是一项相当简单的任务,因此可能出现的问题可能太多了。
我能立即想到的唯一问题是,如果一个线程在其计算中使用旧的x值。
例如:
以x = 2
开头1)线程A读取x = 2
2)线程B读取x = 2
3)线程A写入x = 2 + 1
x = 3
4)线程B写入x = 2(x的旧值)+ 1
x = 3,应为4
如果超过1个线程在第一个线程写入之前读取该值,这将更加明显。