如果x在任何这种情况发生之前被初始化为0,那么在两个不同的进程中同时执行以下两个for循环之后x的可能值是多少? (每个过程一个)
for (i = 0; i < 5; i++)
x++
for (j = 0; j < 5; j++)
x--
(已编辑)这里会发生什么?任何指令都可以失败,或者结果总是x = 0?
答案 0 :(得分:1)
没有理由因为没有锁定代码而导致死锁。 i和j的不同值取决于线程执行的非确定性顺序。 假设第一个线程开始,然后在时间i = 4时停止,然后第二个线程开始,将i初始化为零并继续直到第一个和第二个循环结束。第二个线程从第一个循环中恢复并立即退出,因为i = 6(前一个线程留下的值),然后在第二个循环中正常进行。 这只是一个场景。你可以提出类似的,可能性是无穷无尽的。