Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
Concurrency Io语言如何自动检测死锁?_Concurrency_Deadlock_Iolanguage - Fatal编程技术网

Concurrency Io语言如何自动检测死锁?

Concurrency Io语言如何自动检测死锁?,concurrency,deadlock,iolanguage,Concurrency,Deadlock,Iolanguage,我读到Io语言具有自动检测死锁的功能。我对它一无所知,也见过一些语法。Io语言如何通过这种方式检测死锁?Io遇到死锁时会抛出异常 从我相信开始。贴在下面的消息: Io具有异步消息和未来形式的连续性。例如: 这种使用方式的有趣之处在于,似乎没有人觉得它难以理解。此外,Io使用futures进行自动死锁检测。当死锁发生时,它会引发异常而不是允许它 注意。上述发布日期为2003年,因此发生了一些变化。有关最新信息,请参阅最新的在线文档 更新-从中可以看出: 自动死锁检测 使用futures的一个优点

我读到Io语言具有自动检测死锁的功能。我对它一无所知,也见过一些语法。Io语言如何通过这种方式检测死锁?

Io遇到死锁时会抛出异常

从我相信开始。贴在下面的消息:

Io具有异步消息和未来形式的连续性。例如:

这种使用方式的有趣之处在于,似乎没有人觉得它难以理解。此外,Io使用futures进行自动死锁检测。当死锁发生时,它会引发异常而不是允许它

注意。上述发布日期为2003年,因此发生了一些变化。有关最新信息,请参阅最新的在线文档


更新-从中可以看出:

自动死锁检测

使用futures的一个优点是,当futures需要等待时,它将检查暂停等待结果是否会导致死锁,如果是,则避免死锁并引发异常。它通过遍历已连接期货的列表来执行此检查


每个未来都知道它在等待哪个参与者,每个参与者都知道它在等待哪个未来(如果有的话),所以Io只是沿着这条链走,看看当前参与者是否在其中。如果是,就会出现僵局。如果没有,则没有。

这与停车问题有何关系?死锁检测不是基本上可以看到何时停止吗?或者这是一个总是可以识别的子集?
aFuture = obj @foo

// the @ means "perform message foo asynchronously"
// that is, in a light weight thread owned by obj
// The aFuture's value ivar is set with the result

result = aFuture value

// This causes the current light weight thread to pause
// until the aFuture's vale is set.
// So this is effectively a continuation.
// another option is:

obj @(foo) sendResultTo(target, "foobar")

// which is more like the callcc style