一、Linux线程控制API
1. 获取线程自身的线程ID。
2.线程创建。
参数说明:
tidp: 当线程创建成功时,tidp指向的内存单元被设置为新创建线程的线程ID。
attr:attr参数用于定制各种不同的线程属性。设为NULL时,创建默认属性的线程。
start_rtn: 函数指针,新创建的线程从start_rtn函数的地址开始运行,该函数只有一个无类型指针参数arg,如果需要指向start_rtn函数传递的参数不止一个,那么需要将这些参数放到一个结构中,然后把这个结构的地址作为arg参数传入。
线程创建时并不能保证哪个线程会先运行(即不能保证是新创建线程先运行还是调用线程先运行)。新创建的线程可以访问进程的地址空间。
3.线程退出
调用pthread_join后,当前线程将一直阻塞,直到指定的线程退出。如果指定线程以return方式退出,则rval_ptr中保存返回码,如果是被取消,则rval_ptr指定的内存单元就置为PTHREAD_CANCELED。
注意,默认情况下,线程的终止状态会保存到对该线程调用pthread_join。所以,在线程结束时,一般要调用pthread_join来清除线程的终止状态。
如果线程已经处于分离状态,线程的底层存储资源可以在线程终止时立即被收回。当线程被分离时,并不能用pthread_join函数等待他的终止状态。对分离状态的线程进行pthread_join的调用会产生失败,返回EINVAL。
pthread_detach函数可以使线程进入分离状态。