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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。