摘要
暫停指定工作。目前只有執行緒或程序帳號可能遭到停權。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_task_suspend(zx_handle_t handle, zx_handle_t* token);
說明
zx_task_suspend()
會暫停要求的工作
未同步暫停工作,因此工作可能不會
暫停狀態。即將暫停這項工作
叫用 zx_task_suspend()
後,除非使用者目前在
在這種情況下,核心會在解除封鎖後暫停。
在開始之前,您可以暫停和/或恢復工作。如果工作 因此在執行任何程式碼前,會進入暫停狀態。 同樣地,在已暫停的處理程序中啟動新的執行緒,也會暫停執行緒 再執行任何程式碼
如果對已暫停的工作叫用 zx_task_kill()
,就會成功終止工作
執行工作
工作不可暫停自己或其任何父項工作 接收暫停權杖,且無法繼續執行作業。
恢復中
如要允許工作繼續,請關閉暫停權杖控制代碼。工作
就會維持在停權狀態。就像暫停一樣
恢復為非同步狀態,因此當執行緒呼叫時,執行緒可能並非處於執行中狀態。
即使沒有其他暫停權杖,zx_handle_close()
呼叫也會傳回
已開啟。
信號與例外情況
執行緒可以斷言下列兩種相關信號:
ZX_THREAD_RUNNING
ZX_THREAD_SUSPENDED
除非透過
zx_process_start()
或 zx_thread_start()
。時間
執行緒開始後,會宣告 ZX_THREAD_RUNNING
是否已暫停
或不可以,但如果遭停權,則會切換為 ZX_THREAD_SUSPENDED
再執行任何程式碼
ZX_EXCP_PROCESS_STARTING
和 ZX_EXCP_THREAD_STARTING
偵錯
不論工作是否暫停,系統都會在開始時傳送例外狀況。
權限
handle 必須是 ZX_OBJ_TYPE_THREAD
或 ZX_OBJ_TYPE_PROCESS
類型,且具有 ZX_RIGHT_WRITE
。
傳回值
zx_task_suspend()
會在成功時傳回 ZX_OK
。
如果失敗,系統會傳回負的錯誤值。
錯誤
ZX_ERR_BAD_HANDLE
帳號代碼不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
處理常式不是執行緒或程序控制代碼。
ZX_ERR_INVALID_ARGS
token 是無效的指標。
ZX_ERR_BAD_STATE
工作已經終止或死亡,無法暫停。
ZX_ERR_NO_MEMORY
無法分配記憶體。
ZX_ERR_NOT_SUPPORTED
呼叫執行緒嘗試自行暫停,或
其中一種父項工作
限制
目前僅支援執行緒和程序帳號。