在 Lock::Async 中§
请参阅方法 unlock的上下文中的主要文档 in context
method unlock(Lock::Async: --> Nil)
释放锁。如果有任何未完成的 lock
Promise
,队列头部的那个将被保留,并且可能在线程池上安排代码(因此调用 unlock
的成本仅限于安排另一段想要获取锁的代码所需的工作,而不是执行该代码)。
my = Lock::Async.new;await .lock;.unlock;
最好使用 protect 而不是显式调用 lock
和 unlock
。但是,如果希望分别使用这些方法,最好使用 LEAVE
块来确保可靠地调用 unlock
。未能 unlock
将意味着没有人能够再次 lock
此特定 Lock::Async
实例。
my = Lock::Async.new;
在 Lock 中§
请参阅方法 unlock的上下文中的主要文档 in context
method unlock(Lock:)
释放锁。
my = Lock.new;.lock;.unlock;
务必确保始终释放 Lock
,即使抛出异常也是如此。确保这一点的最安全方法是使用 protect
方法,而不是显式调用 lock
和 unlock
。如果没有,请使用 LEAVE
移相器。
my = Lock.new;
在 IO::CatHandle 中§
请参阅方法 unlock的上下文中的主要文档 in context
method unlock(IO::CatHandle:)
与 IO::Handle.unlock
相同。如果 源句柄队列已耗尽,则返回 Nil
。
仅解锁当前活动的源句柄。 .on-switch
Callable
可用于在 CatHandle 处理句柄时方便地锁定/解锁句柄。
在 IO::Handle 中§
请参阅方法 unlock的上下文中的主要文档 in context
method unlock(IO::Handle: --> True)
从文件句柄中删除 lock
。如果不可能,它将返回 True
或引发异常。