gpt4 book ai didi

c - 读写器:how could this code lead to deadlock

转载 作者:行者123 更新时间:2023-11-30 18:39:36 26 4
gpt4 key购买 nike

void X() {
lock(&m);
while(x || y)
wait( &farpar, &m);
x ++;
unlock(&m);
// Do X stuff
lock(&m);
x --;
broadcast(&farpar);
unlock(&m);
}
double Y() {
lock(&m);
while(x)
wait( &farpar, &m);
y ++;
unlock(&m);
// Do Y stuff
lock(&m);
y --;
broadcast(&farpar);
unlock(&m);
}

在上面的代码中,m 是互斥锁,farpar 是条件变量。有人告诉我这可能会造成僵局,但我不知道这是怎么发生的。顺便说一句,X 是作者,Y 读者

最佳答案

您可以轻松地在心里运行该程序:

  • X 锁定 m
  • X 停留在 while 循环中,等待 yY 修改
  • Y 想要锁定 m,但互斥体已被 X 拥有
  • Y 无法更新 y
  • X 永远循环

关于c - 读写器:how could this code lead to deadlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29079001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com