Pthread线程使用详解
文中先讲解函数,再运行实例,以及一些注意事项。
函数 pthread_create ,使用 man 3 pthread_create 查看介绍。
函数描述:
通过 pthread_create 创建的新线程,有收下四种方法退出线程:
attr参数 是一个 pthread_attr_t 结构体,它在线程被创建时被用来设定新线程的属性。这个结构体的初始化是通过 pthread_attr_init() 函数。如果该参数为空,那么新线程会使用默认的属性参数。
在 pthread_create 函数调用返回之前,新线程的内存指针会赋给 thread 参数,表示线程的ID,这个ID的作用是在后续可以调用针对该线程的其它pthreads函数。
返回值
成功返回0,失败返回一个错误编号,同时 thread 参数也不会被赋值。
函数描述
pthread_join 函数会等待指定的线程结束,如果指定的线程已经线束,那么它会立即返回。指定的线程必须是joinable的。也就是说, pthread_join() 函数会 一直阻塞调用线程,直到指定的线程tid终止 。当 pthread_join() 返回之后,应用程序可回收与已终止线程关联的任何数据存储空间 ,(另外也可设置线程attr属性,当线程结束时直接回收资源)如果没有必要等待特定的线程终止之后才进行其他处理,则应当将该线程分离 pthread_detach() 。
如果 retval 不为空,那么该函数会拷贝退出状态值到 retval 指向的内存中,如果目标thread被cancel了, retval 的值为 PTHREAD_CANCELED
返回值
成功返回0,错误返回错误码