![](https://csdnimg.cn/release/download_crawler_static/86750875/bg6.jpg)
性将在后面的 XX 节讨论。第三个参数 start_routine 是线程开始执行的时
候调用的函数的
名字。这个函数必须具有以下的格式:
void* start_routinevoid* arg;
返回的 void 指针将被 pthread_join 函数当做退出状态来处理。第四个参数
arg 正是传递给
start_routine 函数的参数。POSIX 的 pthread_create 函数会使创建的线程
自动处于可运行
状态,而不需要一个单独的启动操作。
如果成功,pthread_create 返回 0,如果不成功,pthread_create 返回一个非
零的错误码。
下表列出了 pthread_create 的错误形式及相应的错误码
错误 原因 EAGAIN 系统没有创建线程所需的资源,或者创建线
程会超出系统对一个进程中线程总数的限制
EINVAL attr 参数是无效的
EPERM 调用程序没有适当的权限来设定调度策略或
attr 指定的参数
表 3.3 pthread_create 的错误形式及相应的错误码
每一个线程可以通过调用函数 pthread_self 得到本线程的 ID(数据结构类
型:pthread_t) ,
它的形式为:
pthread_t pthread_selfvoid;
由于 pthread_t 可能是一个结构,因此 POSIX 提供了一个函数
pthread_equal 来比较线程