BSD库函数手册翻译之pthread_create函数

pthread_create函数

名称

	pthread_create -- 创建一个新线程

概要

	#include <pthread.h>
	int
	pthread_create(pthread_t *thread,
			const pthread_attr_t  *attr,
			void *(*start_routine)(void *),
			void   *arg);

描述

	pthread_create()函数用来在进程内创建一个新线程,它的属性是由attr指定的。
	若attr为NULL,则使用默认的属性。若由atrr指定的属性在之后发生改变,线程的属性不受影响。
	一旦成功创建线程,pthread_create()函数将把创建好的线程的ID储存在由参数thread指定的位置。
	创建线程的同时,会执行start_routine函数,该函数有个唯一的参数,arg。
	若函数start_routine返回了,效果就如同,隐式调用了pthread_exit()函数,它使用start_routine函数的返回值作为退出状态。
	注意,最初调用main()函数的主线程不同于此。当主线程从main()函数里返回时,
	效果如同隐式调用exit()函数,该函数使用main()函数的返回值作为退出状态。
	线程一退出,它所占用的存储空间必须被回收——回收是通过另一个线程调用pthread_join()函数来完成的;
	或者,可通过在线程上调用pthread_detach()来表明——一旦线程退出,系统将自动回收线程的存储空间。
	为了获得与在新创建的线程上调用pthread_detach()函数相同的效果,
	也可以在传入pthread_create()函数的attr参数上调用pthread_attr_setdetachstate()函数。
	新线程的信号状态被初始化为:
	1. 信号掩码继承自新建线程。
	2. 等候新线程的信号集是空的。

返回值

若成功执行,pthread_create()函数将返回零。否则,将返回一个表示错误的错误码。

错误

	pthread_create()函数在以下情形下会失败:
	 [EAGAIN]	系统缺乏足够的资源来创建另一个线程,或者超过了系统设定的一个进程可容纳的线程总数[PTHREAD_THREADS_MAX]的限制。
	 [EPERM]   函数调用者没有合适的权限来设置所需的调度参数或调度策略。
	 [EINVAL]   由attr所指定的值是无效的。

另请参阅

	 fork(2), pthread_attr(3), pthread_cancel(3), pthread_cleanup_pop(3),
 pthread_cleanup_push(3), pthread_exit(3), pthread_join(3)

标准

	pthread_create()函数符合 ISO/IEC 9945-1:1996 (``POSIX.1'')这一标准。

BSD 2014,3月15日 BSD

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值