Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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_Memory_Operating System_Traffic - Fatal编程技术网

Algorithm 创建死锁的过程是什么?

Algorithm 创建死锁的过程是什么?,algorithm,memory,operating-system,traffic,Algorithm,Memory,Operating System,Traffic,我已经看到了许多关于StackOverflow如何创建死锁的答案,但都是编写的代码。 我想用一种更简单的方式来理解。我想知道你将采取哪些步骤来重新建立这个僵局。我不是在寻找代码,而是更多的步骤。 谢谢你抽出时间。 很抱歉链接图片,我需要10个声誉来发布图片。最简单的方法-进程A必须先等待进程B完成,才能让A完成它的工作(比如说A需要B的输出来进行自己的一些计算)在B中也会发生同样的事情:它必须等待进程A的输出才能完成自身 我希望这对你来说足够清楚。由于您明确要求不提供任何代码,所以我不会编写任

我已经看到了许多关于StackOverflow如何创建死锁的答案,但都是编写的代码。 我想用一种更简单的方式来理解。我想知道你将采取哪些步骤来重新建立这个僵局。我不是在寻找代码,而是更多的步骤。

谢谢你抽出时间。
很抱歉链接图片,我需要10个声誉来发布图片。

最简单的方法-进程A必须先等待进程B完成,才能让A完成它的工作(比如说A需要B的输出来进行自己的一些计算)在B中也会发生同样的事情:它必须等待进程A的输出才能完成自身

我希望这对你来说足够清楚。由于您明确要求不提供任何代码,所以我不会编写任何代码,因为找到死锁代码可能太容易了。但基本上,这与汽车相互阻塞的情况类似。

死锁中的“锁定”来自于锁定文件或数据库表的能力,以防止多个进程同时更新同一文件/表

例如,进程1锁定表A,进程2锁定表B。如果进程1也想更新表B,但发现它已锁定,则必须等待进程2释放它。如果进程2必须更新表A,它也将被锁定


这种情况是一种死锁,两个进程都在等待对方释放它们的锁。

我们都有牛排要吃,但我们的银器太少了

我有叉子吃,但你有唯一的刀,所以我得等你把它吃完,然后我才能切肉

你有一把刀来切,但我有唯一的叉子,所以你必须等到我切好后,你才能抓住叉子把它按住

看来我们要挨饿了。这是一个僵局

标准的解决方案只是确保如果有人同时需要刀叉,那么他们必须先拿起刀叉