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


Python os.eventfd用法及代碼示例


用法:

os.eventfd(initval[, flags=os.EFD_CLOEXEC])

創建並返回一個事件文件說明符。文件說明符支持緩衝區大小為 8 的原始 read()write()select()poll() 等。有關更多信息,請參見手冊頁 eventfd(2)。默認情況下,新文件說明符是不可繼承的。

initval 是事件計數器的初始值。初始值必須是 32 位無符號整數。請注意,盡管事件計數器是一個最大值為 264-2 的無符號 64 位整數,但初始值僅限於 32 位無符號 int。

flags 可以從 EFD_CLOEXECEFD_NONBLOCKEFD_SEMAPHORE 構造。

如果指定了EFD_SEMAPHORE 並且事件計數器不為零,則eventfd_read() 返回 1 並將計數器減一。

如果未指定 EFD_SEMAPHORE 且事件計數器非零,則 eventfd_read() 返回當前事件計數器值並將計數器重置為零。

如果事件計數器為零且未指定EFD_NONBLOCK,則eventfd_read() 阻塞。

eventfd_write() 增加事件計數器。如果寫入操作會將計數器增加到大於 264-2 的值,則寫入塊。

例子:

import os

# semaphore with start value '1'
fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC)
try:
    # acquire semaphore
    v = os.eventfd_read(fd)
    try:
        do_work()
    finally:
        # release semaphore
        os.eventfd_write(fd, v)
finally:
    os.close(fd)

可用性:Linux 2.6.27 或更高版本以及 glibc 2.8 或更高版本。

3.10 版中的新函數。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 os.eventfd。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。