大家好,我是「阑梦清川」

这道题目说的是进程 P 和进程 Q 并发执行时,在什么情况下绝对不会因为读写同一份数据而出现问题。
首先我们把符号翻译一下:
RP 指的是 P 要读的数据(Read) WP 指的是 P 要写的数据(Write) RQ 是 Q 要读的数据 WQ 是 Q 要写的数据 两个集合的交集等于空集(∅),意味着两边没有重合的数据
其实并发执行最害怕的是以下三种情况:
你在改,我在看:
对应第一个选项。Q 正在读数据,但 P 同时去改数据,这会导致 Q 可能读到改了一半、没改完的数据(即“脏数据”),所以这个条件必须要有。我在看,你在改:
这和第一种情况类似,只是角色互换了,同样会读到脏数据,所以这个条件也必须满足。咱俩一起改:
那更不行了。对应第三个选项,即 P 和 Q 写操作的交集必须是空集。如果 P 和 Q 同时改同一个变量,结果会不稳定,所以它们的交集一定要是空集,这样才不会发生错误。
至于第二个选项所说的“两个同时读的数据交集为空集”,其实是不影响的。两个人同时看同一份数据,数据本身不会被改变,一点问题都没有。所以哪怕读操作的交集不是空集,也是安全的,这个条件不需要满足。
综上所述,并发执行不会发生错误的必要条件应该是 1、3、4。
我是「阑梦清川」,希望得到您的关注
文章来源:
四季读书网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至23467321@qq.com举报,一经查实,本站将立刻删除;如已特别标注为本站原创文章的,转载时请以链接形式注明文章出处,谢谢!