Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/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
Haskell 何时保证MVar操作不间断?_Haskell_Concurrency_Exception Handling - Fatal编程技术网

Haskell 何时保证MVar操作不间断?

Haskell 何时保证MVar操作不间断?,haskell,concurrency,exception-handling,Haskell,Concurrency,Exception Handling,描述了哪些操作可以引发异步异常,即使在掩码ed块中也是如此,说明:“以下操作保证不可中断” 如果MVar肯定已满,则取MVar,反之,如果 MVar绝对是空的 从编译器的角度来看,MVar在什么情况下“肯定”是满的还是空的?这是否已经足够好地定义,可以在不处理每个MVar操作上的异步异常的情况下,对代码是否会中断进行推理?编译器没有做出保证,这就是为什么他们这么说的原因 特别是,如果MVar已满,则takeMVar不会阻塞,因此不能中断。同样,对于空的MVar和putMVar,由于它没有阻塞,因

描述了哪些操作可以引发异步异常,即使在
掩码
ed块中也是如此,说明:“以下操作保证不可中断”

如果MVar肯定已满,则取MVar,反之,如果 MVar绝对是空的


从编译器的角度来看,
MVar
在什么情况下“肯定”是满的还是空的?这是否已经足够好地定义,可以在不处理每个
MVar
操作上的异步异常的情况下,对代码是否会中断进行推理?

编译器没有做出保证,这就是为什么他们这么说的原因

特别是,如果
MVar
已满,则
takeMVar
不会阻塞,因此不能中断。同样,对于空的
MVar
putMVar
,由于它没有阻塞,因此不能中断


之所以使用这个短语,是因为如果
MVar
不完整,比如说因为它有时完整,有时不完整,那么保证就不再正确。

我打赌编译器对MVar一无所知。