多线程-Cancel详解

在取消一个对等线程的请求被同意时,会有一个取消过程同pthread_cancel( )的返回异步发生。

目标线程的取消类型和取消状态决定了取消何时真正发生。可取消性状态描述了线程的取消状况为可取消或不可取消。

线程的可取消性类型决定了线程在收到取消请求后继续执行的能力。可取消性状态和类型是由线程自己动态设置的。

调用线程的可取消性状态和类型是由pthread_setcancelstate( )和pthread_setcanceltype( )设置的。

pthread_setcancelstate( )将调用线程设置为state所指定的可取消性状态,并将之前的状态在oldstate中返回。

pthread_setcanceltype( ) 将调用线程设置为type所指定的可取消性类型,并将之前的类型在oldtype中返回。

调用形式

#include int pthread_setcancelstate(int state, int *oldstate);

int pthread_setcanceltype(int type, int *oldtype);

用于设置线程取消状态的state和oldstate的值是:

PTHREAD_CANCEL_DISABLE

PTHREAD_CANCEL_ENABLE

PTHREAD_CANCEL_DISABLE使得线程忽略取消请求。

PTHREAD_CANCEL_ENABLE使得线程允许取消请求。

PTHREAD_CANCEL_ENABLE是任何新近创建的线程的默认状态。

如果成功,函数返回0。如果没有成功,函数返回一个错误号。

如果没有传递有效的state值,则pthread_setcancelstate( )会失败。

函数pthread_setcanceltype( )将调用线程的可取消性状态设置为type指定的类型,并将之前的状态通过oldtype返回。

type和oldtype的值可以为:

PTHREAD_CANCEL_DEFFERED

PTHREAD_CANCEL_ASYNCHRONOUS

PTHREAD_CANCEL_DEFFERED使得线程推迟终止,

直到它到达它的取消点。这是任何新近创建的线程的默认可取消性类型。

PTHREAD_CANCEL_ASYNCHRONOUS使得线程立即终止。

如果成功,函数返回0。如果不成功,函数返回一个错误号。

如果没有传递有效的type,则pthread_setcanceltype( )会失败。

pthread_setcancelstate ( )和pthread_setcanceltype( )共同使用来建立线程的可取消性。

java线程的cancel_多线程-Cancel详解相关推荐

  1. Java线程池七个参数详解

    java多线程开发时,常常用到线程池技术,这篇文章是对创建java线程池时的七个参数的详细解释. 从源码中可以看出,线程池的构造函数有7个参数,分别是corePoolSize.maximumPoolS ...

  2. Java线程池原理与实例详解

    Wiki 采用new Thread的方式产生多线程,可能有以下一些问题:  线程的创建和销毁开销很大,尤其是有些线程的存在时间较短:  线程的创建和销毁过程中伴随着CPU在线程间的切换,开销很大: ...

  3. Java 线程池原理和队列详解

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51701508 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  4. java线程池使用最全详解

    线程池使用 前言 在执行一个异步任务或并发任务时,往往是通过直接new Thread()方法来创建新的线程,这样做弊端较多,更好的解决方案是合理地利用线程池,线程池的优势很明显,如下: 降低系统资源消 ...

  5. Java线程池(ThreadPool)详解

    线程五个状态(生命周期): 线程运行时间 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间. 如果:T1 + T3 远大于 T2,则可以采用线 ...

  6. Java线程池七个参数详解:核心线程数、最大线程数、空闲线程存活时间、时间单位、工作队列、线程工厂、拒绝策略

    源码简介 ThreadPoolExecutor是JDK中的线程池实现,这个类实现了一个线程池需要的各个方法,它提供了任务提交.线程管理.监控等方法. 下面是ThreadPoolExecutor类的构造 ...

  7. Java线程池及配置参数详解

    一.线程池的优点 合理利用线程池能够带来三个好处. 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 第二:提高响应速度.当任务到达时,任务可以不需要的等到线程创建就能立即执 ...

  8. Java线程中的sleep方法详解

    文章目录 1.关于线程的sleep方法 2.分析哪个线程休眠的 3.终止线程的休眠 4.终止线程 强行终止线程 合理的终止线程 1.关于线程的sleep方法 static void sleep(lon ...

  9. future java 原理_Java线程池FutureTask实现原理详解

    前言 线程池可以并发执行多个任务,有些时候,我们可能想要跟踪任务的执行结果,甚至在一定时间内,如果任务没有执行完成,我们可能还想要取消任务的执行,为了支持这一特性,ThreadPoolExecutor ...

最新文章

  1. 免费公开课 | 数据科学家,从入门到精进!【今晚福利】
  2. 【转】MySQL实现Oracle里的 rank()over(ORDER BY) 功能
  3. 手把手教你在.NET中创建Web服务
  4. 春运返程高峰来了 大数据看返京热力
  5. object对象进行深拷贝
  6. Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者
  7. mysqldump: Got error: 1044
  8. 双子星tv源码_双子星IPTV电视直播管理系统源码安装教程
  9. AdxMenu真的不错!我写了个中文的使用说明如下,希望大家用得着
  10. 征途服务器 文件夹需手,手游新征途手工架设服务端+配套双客户端+架设流程+服务器部署文档等...
  11. 谷粒学院day08——课程章节与小节的实现
  12. MySQL-day02作业
  13. 深度学习与自然语言处理教程(4) - 句法分析与依存解析(NLP通关指南·完结)
  14. macd金叉公式成功率_MACD金叉kdj死叉和20日线可靠吗
  15. 解决mysql load data加载本地null数据,表里出现0的情况
  16. P4735 贪心 + 可持久化 Trie
  17. 稳中求变,试着提高时间管理能力
  18. 基于FTP网盘系统设计
  19. 四轮独立驱动电动汽车转矩分配控制 CarSim与Simulink联合 三自由度车辆模型(纵向、横向、横摆)
  20. BIOS密码无法修改,对BIOS放电也不行

热门文章

  1. oracle 查看 用户,用户权限,用户表空间,用户默认表空间
  2. sql server2005用户权限如何设置
  3. flex+hibernate 中java的pojo与as的pojo的映射问题
  4. html灵活响应 图片设置,jQuery轻量级响应式图片轮播插件ResponsiveSlides.js(仅1kb)
  5. 【UAV】陀螺仪数据分析,以维特智能 JY901B 为例
  6. 2.6 Word2Vec-深度学习第五课《序列模型》-Stanford吴恩达教授
  7. 1.15 总结-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  8. 【工具】音乐播放相关工具,音乐文件格式转换工具,MP3文件转换成arduino可以直接播放的wav格式,MP3转WAV工具...
  9. 爱国者强烈推荐:nanopiR1——你懂的功能,懂你的开发板
  10. 超声相控阵合成孔径成像FPGA设计介绍