【问题标题】:executing a command on a variable used by multiple threads对多个线程使用的变量执行命令
【发布时间】:2015-04-29 15:29:09
【问题描述】:

考虑到两个线程执行计算的线程场景:

 x = x + 1 where x is a shared variable

可能的结果是什么,并描述您的答案可能发生的原因。

这是我的操作系统书籍中的一个教科书问题,我很好奇是否需要更多信息来回答这个问题,例如什么 x 也被初始化以及线程执行此命令的频率或仅执行一次。我最初的回答是,这可能是两个可能的答案,具体取决于操作系统执行线程的顺序。

【问题讨论】:

    标签: multithreading operating-system thread-safety


    【解决方案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

    如果有多个线程在第一个线程写入之前读取值,这将更加明显。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      相关资源
      最近更新 更多