![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
第8章 理解Linux线程(2)
周厚平
Linux + 安卓 = 标配
展开
-
(1)线程的取消 -----强制使进程退出
不建议使用取消接口来使线程退出①向线程发送取消请求 pthread_cancel(pthread_t thread); 1.一个线程可以通过调用该函数向另一个线程发送取消请求。 2.如果成功,该函数返回0,否则将错误码返回。 3.这不是个阻塞型接口,发出请求后,函数就立刻返回了,而不会等待目标线程退出之后才返回。 4.函数的本质:会向目标线程发送...原创 2018-12-29 19:42:31 · 888 阅读 · 0 评论 -
线程的清理函数
(1)为什么要使用线程清理函数 1.假设遇到取消请求,线程执行到了取消点,却没有来得及做清理动作(如动态申请的内存没有释放,申请的互斥量没有解锁等), 可能会导致错误的产生,比如死锁,甚至是进程崩溃。 2.为了避免这种情况,线程可以设置一个或多个清理函数,线程取消或退出时,会自动执行这些清理函数,以确保资源处于一致的状态。(2)相关接口 void pthread_cle...原创 2019-01-05 16:23:59 · 927 阅读 · 2 评论 -
【三】通用线程池--构建
(1)思想 1.一个进程中的线程就好比是一家公司里的员工,员工的数目应该根据公司的业务多少来 定,太少了忙不过来,但是太多了也浪费资源。 2.最理想的情况是:让进程有一些初始数目的线程(所谓的线程池),当没有任务的时候这些线程自动进入睡眠, 有了任务他们会立即执行任务,不断循环。 3.进程还应该可以根据自身任务的繁重与否来增删线程的数目。 ...原创 2019-01-06 19:22:02 · 215 阅读 · 1 评论 -
限制指定子线程work执行时间为A秒
1.定时器alarm()和setitimer()都不能用于限制子线程的指向时间,因为信号会被主线程捕获(参考第6章笔记) 2.思想 1.在子线程work中再创建一个子线程work2 2.work中注册一个信号SIG 3.将work线程的线程ID pid1作为参数传递给子线程work2 3.在work2中sleep(A)后...原创 2019-01-17 21:41:00 · 319 阅读 · 0 评论