总结
创建会话。
声明
#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_exit()
)断言 ZX_THREAD_TERMINATED
信号。
process 是新线程的控制进程对象,它将成为该进程的子级。
如需详细了解线程生命周期,请参阅线程对象。
权限
process 必须为 ZX_OBJ_TYPE_PROCESS
类型且具有 ZX_RIGHT_MANAGE_THREAD
。
返回值
成功后,zx_thread_create()
会向新线程返回 ZX_OK
和句柄(通过 out)。如果失败,则返回负的错误值。
错误
ZX_ERR_BAD_HANDLE
process 不是有效的句柄。
ZX_ERR_WRONG_TYPE
process 不是进程句柄。
ZX_ERR_ACCESS_DENIED
进程没有 ZX_RIGHT_MANAGE_THREAD
权限。
ZX_ERR_INVALID_ARGS
name 或 out 是无效的指针,或者 options 为非零值。
ZX_ERR_NO_MEMORY
由于内存不足而失败。
用户空间没有什么方法来处理此(不太可能)错误。在以后的 build 中,此错误不会再发生。
另请参阅
zx_handle_close()
zx_handle_duplicate()
zx_object_wait_async()
zx_object_wait_many()
zx_object_wait_one()
zx_thread_exit()
zx_thread_start()