0

如果在这一切发生之前将 x 初始化为 0,那么在以下两个 for 循环在两个不同进程中同时执行之后,x 的可能值是多少?(每个过程一个)

for (i = 0; i < 5; i++)
    x++

for (j = 0; j < 5; j++)
    x--

(已编辑)这里会发生什么?任何指令都可能失败,还是结果总是 x = 0?

4

1 回答 1

1

由于没有锁定代码,因此没有理由出现死锁。i 和 j 的不同值取决于线程执行的不确定顺序。假设第一个线程启动,然后在 i=4 时停止,然后第二个线程启动,将 i 初始化为零并继续进行,直到第一个和第二个循环结束。第二个线程恢复并立即从第一个循环中退出,因为 i=6(前一个线程留下的值),然后在第二个循环中正常进行。这只是一种情况。你可以想出类似的,可能性是无穷无尽的。

于 2013-10-07T18:45:05.160 回答