Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 这是否支持互斥:并发编程?_Algorithm_Concurrency_Deadlock_Concurrent Programming_Mutual Exclusion - Fatal编程技术网

Algorithm 这是否支持互斥:并发编程?

Algorithm 这是否支持互斥:并发编程?,algorithm,concurrency,deadlock,concurrent-programming,mutual-exclusion,Algorithm,Concurrency,Deadlock,Concurrent Programming,Mutual Exclusion,1/算法是否支持互斥 2/算法是否没有死锁,是否可能出现饥饿 我似乎无法摆脱僵局。我相信没有相互排斥,因为任何客户都可以进入关键部分 谢谢这是一种算法,客户端请求服务器授予的“锁” 这确实是一种互斥算法。相反,假设两个客户端i和j介于C2和C3之间。W.l.o.g.说我是第一个进入临界区的人 当我这样做时,respond=i必须在C1处为真。这必须发生在服务器的Q2上 查看服务器的代码,它无法再次到达Q2,直到Q3失败,即直到respond==0。查看客户机的代码,只有当我离开位于C3的关键部分

1/算法是否支持互斥

2/算法是否没有死锁,是否可能出现饥饿

我似乎无法摆脱僵局。我相信没有相互排斥,因为任何客户都可以进入关键部分


谢谢

这是一种算法,客户端请求服务器授予的“锁”

  • 这确实是一种互斥算法。相反,假设两个客户端i和j介于
    C2
    C3
    之间。W.l.o.g.说我是第一个进入临界区的人

  • 当我这样做时,
    respond=i
    必须在
    C1
    处为真。这必须发生在服务器的
    Q2

  • 查看服务器的代码,它无法再次到达
    Q2
    ,直到
    Q3
    失败,即直到
    respond==0
    。查看客户机的代码,只有当我离开位于
    C3
    的关键部分时,才会发生这种情况

  • 这与j同时处于临界段相矛盾-
    Q2
    只能在我离开临界段时再次到达,因此在此之前,j不可能通过
    C1

  • 这个算法不是没有饥饿感的。客户端j可能会被某个客户端i无限期地绕过。该算法没有死锁:只有一个关键部分,如果任何进入它的线程最终将退出它,那么它最终将可用于另一个线程(尽管可能是同一个线程)


  • 不要发布带有文本的图像。图像中的文本很难阅读(如果你是盲人,则不可能),也无法搜索。把算法的解释直接放在你的问题中。好的,谢谢你的建议。谢谢。很好的解释!