pthread
pthread_create 创建一个新线程
概要
1 |
|
描述
pthread_create() 函数用于在进程内创建一个具有 attr 指定的属性的新线程。如果 attr 为 NULL,则使用默认属性。如果稍后修改 attr 指定的属性,则该线程的属性不会受到影响。成功完成后,pthread_create() 将创建的线程的 ID 存储在线程指定的位置。
通过使用 arg 作为唯一参数执行 start_routine 来创建线程。如果 start_routine 返回,则效果就像使用 start_routine 的返回值作为退出状态对 pthread_exit() 进行了隐式调用。请注意,最初在其中调用 main() 的线程与此不同。当它从 main() 返回时,效果就像使用 main() 的返回值作为退出状态隐式调用 exit() 一样。
线程退出后,该线程的存储必须由另一个线程通过调用 pthread_join() 回收。或者,可以在线程上调用 pthread_detach() 来指示系统可以在退出时自动回收线程存储。为了获得与在新创建的线程上调用 pthread_detach() 相同的效果,可以在传递给 pthread_create() 的 attr 参数上使用 pthread_attr_setdetachstate() 函数。
新线程的信号状态初始化为:
- 信号掩码从创建线程继承。
- 等待新线程的信号集为空。
返回值
如果成功,则 pthread_create() 函数将返回零。 否则,将返回错误编号以指示错误。
错误
如果出现以下情况,pthread_create() 函数将失败:
- 系统缺少创建另一个线程的必要资源,否则将超出系统对进程 [PTHREAD_THREADS_MAX] 中线程总数的限制。
- 调用方没有适当的权限来设置所需的调度参数或调度策略。
- attr 指定的值无效。
案例
1 |
|