当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Buffer.locked用法及代码示例


本文简要介绍ruby语言中 IO::Buffer.locked 的用法。

用法

locked { ... }

允许以独占方式处理缓冲区,用于concurrency-safety。在执行块时,缓冲区被认为是锁定的,没有其他代码可以进入锁定。此外,锁定缓冲区不能用 resize free 更改。

buffer = IO::Buffer.new(4)
buffer.locked? #=> false

Fiber.schedule do
  buffer.locked do
    buffer.write(io) # theoretical system call interface
  end
end

Fiber.schedule do
  # in `locked': Buffer already locked! (IO::Buffer::LockedError)
  buffer.locked do
    buffer.set_string(...)
  end
end

以下操作获取锁: resize free

锁定不是线程安全的。它被设计为围绕非阻塞系统调用的安全网。您只能使用适当的同步技术在线程之间共享缓冲区。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Buffer.locked。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。