Concurrency 基于并发性的测试任务

Concurrency 基于并发性的测试任务,concurrency,Concurrency,问题是: 全局变量x的初始值为0。在系统中,有2个并发进程正在进行,代码如下: process P; var i: integer; begin for i := 1 to 5 do x := x+ 1; end; 执行两个进程后,x的值为 A.=10 B.>=5 当两个进程处理相同的数据时,都是关于一个进程何时读取变量,何时写入值 如果两个进程第一次同时读取x,它们都会将x的值视为0。当第一个进程写入x的新值时,它将是1,但当第二个进程写入x的值时,它也将是1。如果两个进程不同步,则第

问题是:

全局变量x的初始值为0。在系统中,有2个并发进程正在进行,代码如下:

process P;
var i: integer;
begin
   for i := 1 to 5 do x := x+ 1;
end;
执行两个进程后,x的值为

A.=10

B.>=5


当两个进程处理相同的数据时,都是关于一个进程何时读取变量,何时写入值

如果两个进程第一次同时读取x,它们都会将x的值视为0。当第一个进程写入x的新值时,它将是1,但当第二个进程写入x的值时,它也将是1。如果两个进程不同步,则第一个进程可能读取并写入x的值,然后第二个进程将读取并写入x。在后一种情况下,x将增加2而不是1

所以答案B总是正确的,因为即使两个进程同时读取x,它也会增加5倍

只有当两个进程依次读取和写入x时,答案A才为真。 答案C在所有其他情况下都是正确的