當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。