zx_futex_requeue_Single_owner

摘要

先喚醒一個執行緒,在持續建立等候室中,然後將更多等候程序重新排入另一個未來等候佇列。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_futex_requeue_single_owner(const zx_futex_t* value_ptr,
                                          zx_futex_t current_value,
                                          const zx_futex_t* requeue_ptr,
                                          uint32_t requeue_count,
                                          zx_handle_t new_requeue_owner);

說明

啟動一個執行緒等待 value_ptr,並將 value_ptr 的擁有權指派給喚醒的執行緒。如果沒有等待 value_ptr 的執行緒,則會將 value_ptr 的擁有權設為無。

然後,將仍在等待 value_ptrrequeue_count 執行緒從 value_ptr futex 移至 requeue_ptr futex。

zx_futex_requeue_single_owner 類似於 wake_count 為 1 的 zx_futex_requeue,但 zx_futex_requeue_single_owner 會將 value_ptr 的擁有權變更為喚醒執行緒。如需完整說明,請參閱 zx_futex_requeue()

權限

無。

傳回值

zx_futex_requeue_single_owner() 會在成功時傳回 ZX_OK

錯誤

ZX_ERR_INVALID_ARGS 符合下列其中一項條件:

  • value_ptrrequeue_ptr 不是有效的使用者空間指標
  • value_ptrrequeue_ptr 不能與 sizeof(zx_futex_t) 邊界對齊。
  • value_ptrrequeue_ptr 相同
  • new_requeue_owner 目前是 value_ptrrequeue_ptr 的等候者

ZX_ERR_BAD_HANDLE new_requeue_owner 不是 ZX_HANDLE_INVALID,也是無效的控制代碼。

ZX_ERR_WRONG_TYPE new_requeue_owner 是有效的控制代碼,但不是執行緒的控制代碼。

ZX_ERR_BAD_STATE current_valuecurrent_value 的值不相符。

另請參閱