摘要
建立執行緒。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_thread_create(zx_handle_t process,
const char* name,
size_t name_size,
uint32_t options,
zx_handle_t* out);
說明
zx_thread_create()
會在指定程序內建立執行緒。
成功時,會傳回新執行緒的控制代碼。執行緒在呼叫 zx_thread_start()
後才會開始執行。
name 會自動截斷,但上限為 ZX_MAX_NAME_LEN-1
個字元。
執行緒控點可能會等待,並在執行緒停止執行時宣告信號 ZX_THREAD_TERMINATED
(因受到呼叫 zx_thread_exit()
)。
process 是新執行緒的控制程序物件,用來成為該程序的子項。
如需執行緒生命週期詳細資料,請參閱「執行緒物件」。
權限
process 必須為 ZX_OBJ_TYPE_PROCESS
類型且包含 ZX_RIGHT_MANAGE_THREAD
。
傳回值
成功後,zx_thread_create()
會將 ZX_OK
和控制代碼 (透過「出」) 傳回至新的執行緒。如果失敗,系統會傳回負值錯誤值。
錯誤
「ZX_ERR_BAD_HANDLE
」程序不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
程序並非處理程序。
ZX_ERR_ACCESS_DENIED
程序缺少 ZX_RIGHT_MANAGE_THREAD
權限。
ZX_ERR_INVALID_ARGS
name 或 out 為無效指標,或 options 非零。
ZX_ERR_NO_MEMORY
因記憶體不足而失敗。使用者空間無法以任何方式處理這個錯誤 (極可能) 錯誤。日後的建構作業不會再發生這個錯誤。
另請參閱
zx_handle_close()
zx_handle_duplicate()
zx_object_wait_async()
zx_object_wait_many()
zx_object_wait_one()
zx_thread_exit()
zx_thread_start()