linux 线程学习

来源:互联网 发布:二叉树的遍历算法 编辑:程序博客网 时间:2024/06/07 05:44

一.线程创建

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)

六.对于一个线程写,其他线程读的变量要加锁。

0 0