[16][33][多选]进程 P 有两个线程 T1 和 T2,其完成的功能如代码所示。
待补充 代码框 T1: ... while (true){ i = i + 1; } ... T2: while (true){ printf ("%d", i); i = 0; } 假设 i 的初值是 2,之后 T1 和 T2 并发执行了 2 次循环。下列哪些值是可能的输出结果
0
1
2
3
4
答案
0
1
2
3
4
解析
i 的初值是 2,T1 和 T2 并发执行 2 次循环,可能出现的情况有 T1 执行 2 次 i = i + 1 后 T2 执行 2 次 printf ("%d", i; i = 0;,此时输出 0;也可能 T1 执行 1 次 i = i + 1 后 T2 执行 1 次 printf ("%d", i; i = 0;,然后 T1 再执行 1 次 i = i + 1 后 T2 再执行 1 次 printf ("%d", i; i = 0;,此时输出 1;同理可以分析出 2、3、4 也是可能的输出结果,故选择 ABCDE 选项。
【涉及考点】
第 3 章 进程线程模型
转载请注明出处。