待补充....................

函数原型

void pthread_cleanup_push(void (*routine)(void*), void *arg);

void pthread_cleanup_pop(int execute);//这里的int参数,0是不执行push的内容,非0是执行。

三种情况触发回调函数:

1、调用pthread_cancel()删除线程。

2、调用ptread_exit()推出线程。

3、调用pthread_cleanup_pop(1)时参数不为0。

#include

#include

#include

#include

pthread_t thread1, thread2;

void cleanUp(void * arg)//线程清理回调函数

{

printf("%s\n", "cleanUp");

}

void * thread1Func(void *arg)线程一

{

pthread_cleanup_push(cleanUp, "this is cleanUp")

printf("%s\n","sadf");

sleep(4);

pthread_cleanup_pop(0);      //一定要在调用pthread_exit()函数 之前调用pthread_cleanup_pop()函数,cleanup函数才能被调用,因为pop弹出之前才能被调用嘛

pthread_exit((void *)1);//无法触发回调cleanup

}

void * thread2Func(void *arg)

{

pthread_cleanup_push(cleanUp, "this is cleanUp")

printf("%s\n","sadf");

sleep(4);

pthread_exit(0);//触发回调cleanup

pthread_cleanup_pop(0);

}

int main()

{

pthread_create(&thread1, NULL, (void *)thread1Func, NULL);

pthread_create(&thread2, NULL, (void *)thread2Func, NULL);

sleep(1);

pthread_cancel(thread1);//触发回调

pthread_cancel(thread2);//触发回调

sleep(4);

// pthread_join(thread1,NULL);

// pthread_join(thread2,NULL);

return 0;

}

linux线程切换回调函数,linux C线程退出回调函数相关推荐

  1. java线程切换速度_为什么说线程太多,cpu切换线程会浪费很多时间?

    cpu在执行代码的时候[以下说明只在linux平台上,win我不会] 该程序已经是ELF executable file 且该文件内部按ELF格式存储了机器指令+数据 同时该文件必须引用linux 的 ...

  2. java线程切换 notify_浅谈 Java线程状态转换及控制

    作者:城北有个混子 出自:博客园 1.线程的状态(系统层面) 一个线程被创建后就进入了线程的生命周期.在线程的生命周期中,共包括新建(New).就绪(Runnable).运行(Running).阻塞( ...

  3. linux禁止切换到root,linux禁止普通用户切换至root用户的实例讲解

    在上正文之前,我想先将一些基础的linux用户以及用户组的相关命令: 1.添加用户 useradd [-g group] [-d user_home_directory] [-p "your ...

  4. 如何在linux下切换用户,linux如何切换用户?linux切换用户的方法

    linux如何切换用户?linux是一款适用于开发者开发软件的操作系统,不少刚接触linux系统的用户在使用过中会遇到一些问题,最近就有用户反应该如何切换linux用户的问题,关于linux切换用户的 ...

  5. linux 中切换用户指令,linux系统怎么用命令切换用户?

    linux如何切换用户?linux是一款适用于开发者开发软件的操作系统,不少刚接触linux系统的用户在使用过中会遇到一些问题,最近就有用户反应该如何切换linux用户的问题,关于linux切换用户的 ...

  6. linux 中切换用户指令,Linux中的Su命令(切换用户)

    su(替代或切换用户的缩写)实用程序允许您使用其他用户(默认情况下为root用户)的特权运行命令. 使用su是在当前登录会话中切换到管理帐户的最简单方法.当不允许root用户通过ssh或使用GUI显示 ...

  7. Android线程创建aop,【android安卓】一个注解搞定线程切换,基于AOP的线程转换框架...

    最简单的使用方法: 模拟进度展示: @RunOnIOThread public void progress() { for (int i = 0; i <= 100; i++) { showPr ...

  8. linux快速切换目录命令,Linux在命令行快速切换目录 - 米扑博客

    今天在微博上看到一个用命令行快速切换目录的文章,比之前自己的解决方案好了非常多,必须记录下来分享下. 每天在命令行下,一大部分的工作都是一遍又一遍的输入 cd ~/some/very/deep/oft ...

  9. linux怎么切换当前用户名,Linux的用户切换、修改用户的用户名和密码

    一.用户切换 "$":普通用户提示符 "#":root用户提示符 1.普通用户到root: 方式一:命令:su然后输入root密码 此种方式只是切换了root身 ...

  10. 将linux界面切换一屏幕,Linux如何从图形界面切换到命令界面

    1.手工切换:在图形界面中找一个可以输入命令的地方(RedHat9中默认是按alt+F2,或者从菜单:系统工具→终端打开) 输入init 3 回车(注意init后面有一个空格),等一会就进入了命令界面 ...

最新文章

  1. IOS使用个推遇到的坑
  2. 内核管理实战之虚地址转换为物理地址
  3. mimind(思维导图软件)中文版
  4. capcreatecapturewindowa 说明_家长不批改作业,还需要写情况说明?
  5. 2019第十届蓝桥杯C/C++ B组省赛 —— 第三题:数列求值
  6. SAP Spartacus如何判断用户是否已经成功登录
  7. 【ASP.NET Core 沉思录】CreateWebHostBuilder 是一个 Convension
  8. 动易sitefactory 数据库 mysql msssql_动易SiteFactory配置文件(web.config)常用配置节解读...
  9. 大数据发展的问题与机遇
  10. zlib的安装与使用
  11. Java 获取汉字拼音的方法
  12. 类与对象(面向对象的编程语言java)
  13. Smart View 11.1.2.5配置共享连接
  14. 诺基亚Nokia的PC套件导出短信乱码问题解决(转)
  15. 已知三角形顶点坐标,求其外接圆的公式
  16. sd卡驱动分析之core
  17. 20金融学431考研应该注意些什么
  18. 【线性代数笔记】矩阵的合同关系
  19. 日志追踪-类加载器-自定义类加载器
  20. 安卓手机云控系统框架源码,PHP+Autojs, ,这套是空框架源码

热门文章

  1. c++函数可变参数列表foo(int a, ...){}中的省略号“...”
  2. 轻松解决远程链接的“Gtk-WARNING **: cannot open display;”或“Cannot connect to display;”问题
  3. Linux查看显示编辑文本文件
  4. mysql查询语句有点难_Mysql惯用函数,难点,注意_mysql
  5. 免费制作微信小程序开发关于旅游_教大家怎么一步步免费自己做微信小程序
  6. 请画出使用mapreduce对英文句子_「Postgresql架构」用MapReduce的方式思考,但使用SQL...
  7. Vue3计算属性computed
  8. openCV之图像基础(笔记02)
  9. web前端基础(01html基本标签)
  10. elasticsearch设置为windows系统服务