[29][33][多选]进程 P 有两个线程 T1 和 T2,其完成的功能如代码所示:
T1: while (true { printf("%d", i; i = i + 2; } T2: while (true { printf("%d", j; j = j + 3; } 假设当前的值是 1,之后 T1 和 T2 并发执行了 2 次循环。下列哪些值是可能的输出结果?
0
1
2
3
4
答案
0
1
2
3
4
解析
两个线程并发执行时:T1T2T1T2,那么输出结果是 1, 3, i = 2, j = 3;T2T1T2T1,那么输出结果是 1, 1, i = 2, j = 2;T1T1T2T2,那么输出结果是 1, 3, i = 4, j = 0;T2T2T1T1,那么输出结果是 1, 1, i = 0, j = 6;综上所述,假设当前值是 1,之后 T1 和 T2 并发执行了 2 次循环,可能的输出结果为 0、1、2、3、4、5,故本题答案选择 ABCDE 选项。
转载请注明出处。