Zircon 线程Thread
作者:互联网
定义
thread - 可运行的 / 运算实体
描述
线程对象是一种表示时间共享的CPU执行上下文的结构。线程对象存在于关联的特定进程对象中,为其它对象提供I/O和计算所必须的内存和句柄。
生存期
线程是通过调用[zx_thread_create()
]创建的,但只有在调用了[zx_thread_start()
]或[zx_process_start()
]时才开始执行。这两个系统调用将要执行的初始例程的入口点作为参数。
传递给zx_process_start()
]的线程应该是进程中第一个开始执行的线程。
线程终止执行:
- 通过调用[
zx_thread_exit()
] - 通过调用[
zx_vmar_unmap_handle_close_thread_exit()
] - 通过调用[
zx_futex_wake_handle_close_thread_exit()
] - 当父进程终止时
- 通过带有线程的句柄参数调用[
zx_task_kill()
] - 异常之后,没有响应的处理程序或处理程序决定终止线程。
从入口点函数返回,线程不会终止执行。入口点函数的最后操作应该是调用[zx_thread_exit()
]或上面提到的_exit()
变体。
关闭线程的最后一个句柄也不会终止线程执行。为了强制杀死没有可用句柄的线程,使用[zx_object_get_child()
]获取线程句柄。强烈建议不要使用此方法。杀掉正在执行的线程可能会将进程置于corrupt状态。
Fuchsia原生线程总是分离的。也就是说,不需要*join()*操作去完成干净的终止。但是,内核之上的一些运行时runtimes
,例如C11或POSIX可能需要线程是连接的。
系统调用
- [
zx_thread_create()
] - 在进程中创建新线程 - [
zx_thread_exit()
] - 退出当前线程 - [
zx_thread_read_state()
] - 从线程读取注册状态 - [
zx_thread_start()
] - 使新线程开始执行 - [
zx_thread_write_state()
] - 修改线程的注册状态
- [
zx_task_bind_exception_port()
] - 将异常端口附加到任务 - [
zx_task_kill()
] - 使任务停止运行
标签:调用,Thread,thread,句柄,Zircon,exit,zx,线程 来源: https://blog.csdn.net/sinat_20184565/article/details/93907162