zoukankan      html  css  js  c++  java
  • 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遍,然后总结了个框架,代码啥的也没写,目前还没确定代码的用途。
  • 相关阅读:
    Linux用户行为日志审计
    日志分析-Web
    secedit.exe 本地审核
    StreamCQL
    一个关于缓存很好的文章~
    Java免费开源数据库、Java嵌入式数据库、Java内存数据库
    MySQL db优化
    威胁情报
    《javascript设计模式》读书笔记二(封装和隐藏信息)
    Mysql触发器
  • 原文地址:https://www.cnblogs.com/fewolflion/p/14209205.html
Copyright © 2011-2022 走看看