-
Linux:32线程取消
缘起
内容
32.1、取消一个线程
int pthread_cancel(pthread_t thread)
- Returns 0 on success, or a positive error number on error。
32.2、取消状态及类型
int pthread_setcancelstate(int state, int *oldstate);
int pthread_setcanceltype(int type, int *oldtype);
- Returns 0 on success, or a positive error number on error。
- state的值
- PTHREAD_CANCEL_DISABLE
- PTHREAD_CANCEL_ENABLE
- type的值
- PTHREAD_CANCEL_ASYNCHRONOUS
- PTHREAD_CANCEL_DEFERED
32.3、取消点
32.4、线程可取消性的检测
void pthread_testcancel(void);
,作用是产生一个取消点。
32.5、清理函数(cleanup handler)
- 在线程终止之前,修改全局变量、解锁互斥量。挂起状态的收到取消请求后,共享变量或互斥量会置于一种不一致状态。
- 每个线程都拥有一个清理函数栈。
void pthread_cleanup_push(void(*routine)(void*),void *arg);
void pthread_clean_pop(int execute);
32.6、异步取消
- 用得场景较少。
- 异步取消的问题在于,尽管清理函数依然会执行,但处理函数却无从得知线程的具体状态。
31.5、总结
31.6、练习
履历&总结
- 内容参考《Unix系统编程手册》chap32的框架,20201229看了第1遍,然后总结了个框架,代码啥的也没写,目前还没确定代码的用途。
-
相关阅读:
STL简介
Java语言实现简单FTP软件------>上传下载队列窗口的实现(七)
c++模板
10891
错误处理:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
Linux crontab 语法和具体的例子
LoadImage()使用
matplotlib简单的新手教程和动画
三白话经典算法系列 Shell排序实现
AccountManager教程
-
原文地址:https://www.cnblogs.com/fewolflion/p/14209205.html
Copyright © 2020-2023
润新知