首页 > 试题广场 >

有两个线程,最初n=0,一个线程执行 n++; n++; 另

[填空题]

有两个线程,最初n=0,一个线程执行 n++; n++; 另一个执行 n+=2; 问,最后可能的 n 值?1

你的答案 (错误)

1 2,3,4
参考答案
(1) 2、3、4
发表于 2020-05-27 15:59:05 回复(0)
难道不会有: 两个线程都没有执行吗? 0的可能性也是有的吧! 那1的可能性呢?
发表于 2019-10-12 17:39:58 回复(2)
这题有点毛病吧
发表于 2019-10-19 15:25:20 回复(0)

第一种可能情况:现在假设两个线程没有并行顺序执行的那么结果显然是 4。

第二种可能情况:再假设现在第一个n++ 已经执行完了  但是结果还没有写回内存 这个时候 n+=2 已经全部执行完 2写进了内存 结束 然后回到n++的写回操作 这个时候内存就从2被改回1了,后面再来一次n++  结果就为2。

第三种可能情况: 第n+=2 先读取n的值到寄存器 即0入寄存器 这个时候被中断   第一个n++开始执行 并直到结束 内存被改成了1 ,然后 n+=2 继续执行 结束后内存变为2  第二个n++再执行 结果就是3了

编辑于 2020-09-05 15:22:59 回复(0)
什么是最后?
发表于 2019-10-18 14:40:12 回复(0)