在读者—写者中:为啥readcount为临界资源
发布网友
发布时间:2023-06-30 05:04
我来回答
共1个回答
热心网友
时间:2024-09-14 23:27
因为可能会有多个线程同时对这个值进行读写。
当一个读者发现readercount
<
maxreader
时,
他认为可以读了,
就把
readercount
的值加1,
问题就可能出现了,
即使机率很小,
但仍可能发生这样的状况:1).
读者A计算
readercount
<
maxreader,得到结果
true;
2).
读者B计算
readercount
<
maxreader,得到结果还是
true;
3).
A将readercount
的值加1,
使
readercount =
maxreader
的值了;
4).
读者B仍认为
readercount
<
maxreader,
所以他也执行了
readercount
加1
的操作;
最后,
readercount
的值大于了
maxreader
的值,
资源访问超出负荷。