![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
guozhiyingguo
嘻嘻哈哈~
展开
-
pthread_cleanup_push()/pthread_cleanup_pop()
一、为什么会有pthread_cleanup_push与pthread_cleanup_pop:一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。不论是可预见的线程转载 2016-11-16 09:37:35 · 338 阅读 · 0 评论 -
线程的分离状态
线程的分离状态决定一个线程以什么样的方式来终止自己。线程的默认属性,一般是非分离状态,这种情况下,原有的线程等待创建的线程结束。只有当pthread_join()函数返回时,创建的线程才算终止,才能释放自己占用的系统资源。而分离线程没有被其他的线程所等待,自己运行结束了,线程也就终止了,马上释放系统资源。程序员应该根据自己的需要,选择适当的分离状态。 关于分离线程的一种用法(转) 讲到分转载 2016-11-16 10:39:29 · 400 阅读 · 0 评论 -
线程池实例
实例一#include #include #include #include #include #include typedef struct worker //运行和等待的任务链表结构{ void *(*process) (void *arg); //任务运行时会调用该函数 void *arg; struct worker *next;} CThread转载 2016-11-16 17:30:19 · 240 阅读 · 0 评论 -
pthread_cond_wait()函数实际的执行过程
/************pthread_cond_wait()的使用方法**********/pthread_mutex_lock(&qlock); /*lock*/pthread_cond_wait(&qready, &qlock); /*block-->unlock-->wait() return-->lock*/pthread_mutex_unlock(&qlock);转载 2016-11-15 16:27:00 · 1112 阅读 · 1 评论 -
僵死进程
在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵死进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵死进程。补救办法是杀死僵尸进程的父进程(僵死进程的父进程必然存在),僵死进程成为"孤儿进程",过继给1号进程init,ini转载 2016-11-15 17:15:14 · 213 阅读 · 0 评论