一.线程创建
pthread_create(tid,NULL,fun,void*arg) 正常返回0.
void * fun(void*arg);
二.线程终止
任意线程调用了exit,_Exit ,_exit.那么整个进程就会终止。
单个线程退出:1.线程函数中 return或pthread_exit, 2.被其他 线程取消 调用pthread_concel(pid)
三.主线程等待线程结束
pthread_join(tid,NULL); 正常返回0
四.线程清理函数。是在线程处理函数中调用,并且线程处理函数只能用pthread_exit退出时才会调用清理函数。
void pthread_cleanup_push(fun1,void*arg); 加入线程清理函数
void pthread_cleanup_pop(int execute); 调用
例如:void fun1(void *arg){}
void* fun(void*arg)
{
pthread_cleanup_push(fun1,void*arg);
........
pthread_cleanup_pop(0);
pthread_exit((void*)1);
}
五:分离线程:即线程一结束,终止状态等资源就被立即收回,主线程就不能调用pthread_join来等待线程结束状态。
pthread_detach(tid)
六.对于一个线程写,其他线程读的变量要加锁。