首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并发测试任务

问并发测试任务
EN

Stack Overflow用户
提问于 2015-06-25 08:41:16
回答 1查看 15关注 0票数 0

问题是:

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

代码语言:javascript
复制
process P;
var i: integer;
begin
   for i := 1 to 5 do x := x+ 1;
end;

在执行两个进程之后,x的值为..。

A. =10

B. >=5

C. <10

可能有一个以上的答案正确。所以我认为是A和B,但是有人能解释一下这个过程是如何在幕后执行的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-25 08:50:17

当两个进程处理相同的数据时,主要是当一个进程读取一个变量并写入一个值时。

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

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

只有当两个进程一个接一个地读写x时,答案A才是正确的。答案C在所有其他情况下都是正确的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31045300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档