总结
唤醒一些正在等待 futex 的线程,并将 futex 的所有权设为无。
声明
#include <zircon/syscalls.h>
zx_status_t zx_futex_wake(const zx_futex_t* value_ptr, uint32_t wake_count);
说明
唤醒 futex 会导致等待 value_ptr futex 的 wake_count 线程被唤醒。
唤醒零个线程不是错误条件。为 value_ptr 传入未分配的地址不会导致错误。
所有权
成功调用 zx_futex_wake()
会导致 futex 的所有者被设为无任何值,无论唤醒计数是多少。如需转移 futex 的所有权,请改用 zx_futex_wake_single_owner()
变体。zx_futex_wake_single_owner()
会尝试从 futex 等待队列中仅唤醒一个线程。如果至少有一个线程要唤醒,futex 的所有者将被设置为被唤醒的线程。否则,该 futex 没有所有者。
如需了解详情,请参阅 futex 中的所有权和优先级继承。
权限
无。
返回值
zx_futex_wake()
会在成功时返回 ZX_OK
。
错误
ZX_ERR_INVALID_ARGS
value_ptr 未对齐。