push 和 pop 函数的使用

2023-10-27

#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
void *clean(void *arg)
{
printf("cleanup: %s \n",(char *)arg);
return (void *)0;
}
void * thr_fn1(void * arg)
{
printf("chread 1 start \n");
pthread_cleanup_push((void *)clean,"thraed 1 first handler");
pthread_cleanup_push((void *)clean,"thread 1 second handler");
printf("thread 1 push complete \n");
if(arg)
{
return ((void *)1);
}
pthread_cleanup_pop(0);
pthread_cleanup_pop(0);
return (void *)1;
}
//输出结果: chread 1 start ->thread 1 push complte 
//push和pop框起来的代码,不管正常退出还是异常退出,都将执行清除函数,但是存在特例:不包括return 退出
void * thr_fn2(void * arg)
{
printf("chread 2 start \n");
pthread_cleanup_push((void *)clean,"thraed 2 first handler");//push函数的作用:把清除函数压入栈。
pthread_cleanup_push((void *)clean,"thread 2 second handler");
printf("thread 2 push complete \n");
if(arg)
{
pthread_exit((void *)2);//只有退出时,才会执行清除函数cleanup。(栈先进后出)
}
pthread_cleanup_pop(0);
pthread_cleanup_pop(0);
pthread_exit((void*)2);
}
//结果:chread 2 start ->thread 2 push complete -> thread 2 second handler -> thread 1 first handler.
int main(int argc, char *argv[])
{
int err;
pthread_t tid1,tid2;//创建两个线程
void *tret;

err=pthread_create(&tid1,NULL,thr_fn1,(void *)1);
if(err!=0)
{
printf("error \n");
return -1;
}

err=pthread_create(&tid2,NULL,thr_fn2,(void *)1);
if(err!=0)
{
printf("error\n");
return -1;
}
err=pthread_join(tid1,&tret);
if(err!=0)
{
printf("error\n");
return -1;
}
printf("thread 1 exit code %d \n",(int)tret);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

push 和 pop 函数的使用 的相关文章

  • 解决wangEditor表格边框显示不出来、没有的问题

    仔细阅读文档 不过我一直找表格或者边框搜索 发现没有特定的栏目 所以忽略了 当然也有我不够仔细的原因 有点着急莽荒了 链接 在官网的这个页面 从官网贴下来的 把这段复制到想要的地方就可以了
  • 自定义表单控件 [(ngModel)]

    ngModel 拆分 ngModel 将 输入 输出组合起来 进行双向数据绑定 拆分开来 输入属性 ngModel ngModelChange 输出监听元素值的变化 并同步view value与model value
  • 头都给我找烂

    mysql5 6下载 https dev mysql com downloads file id 487425 win10添加本地用户和组 https blog csdn net qq 40151857 article details 89
  • 【Linux命令集】top命令的用法详解

    在使用linux系统中 我们最长用的查看系统性能的方式就是使用命令top 通知我们只关心总体的cpu和内存的使用情况 对其他的参数基本无视 也看不懂 下面来介绍一下top的详细参数的意义 top视图 进入top的基本视图 我们来结合这个视图
  • 电容选型及计算

    一 电容容值计算 1 电容整流波形分析 经过整流后三相电压整流为六脉波电压 电压波形如下图 上图中各时期充电过程如下 在t0 t3阶段是一个T 6周期 一个完整波头阶段 在t0 t1阶段 电容放电 给负载提供能量 此时输入电压小于电容电压
  • openEuler实验之A-Tune智能调优

    1 A Tune介绍 A Tune是一款基于AI开发的系统性能优化引擎 它利用人工智能技术 对业务场景建立精准的系统画像 感知并推理出业务特征 进而做出智能决策 匹配并推荐最佳的系统参数配置组合 使业务处于最佳运行状态 1 1 A Tune
  • redis docker安装、进入命令行后启动服务

    下载redis镜像 首先查看一下redis是否正确 docker search redis 显示 NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source
  • 一文读懂工厂MES系统的详细功能介绍

    一 工单管理 MES通过工单来管理生产执行 工单状态有 创建 下达 执行 完成 取消 计划员创建工单 审核通过后释放到设备或产线 仓库可收到工单下达的通知 及时备料 产线只能看到已下达的工单 执行工单 完成后登记报工 将相关信息反馈回ERP
  • 网络编程——实现HTTP服务器端

    参考 TCP IP网络编程 尹圣雨 Web服务器端 概述 Web服务器端是 基于HTTP Hypertext Transfer Protocol 协议 将网页对应文件传输给客户端的服务器端 Hypertext 超文本 是可以根据客户端请求而
  • redis-----08-----redigo管道以及事务-管道

    1 Redis 管道 正常的情况下 redis是请求响应模式 一条请求后那么正常就会返回一个响应 例如上图 但是只存在这种情况是无法满足我们开发的需求的 所以redis给我们提供了管道 redis的管道 pipeline 相关特点 1 re
  • 概念数据模型(E-R模型)

    概念数据模型 E R模型 概念数据模型是现实世界第一层次的抽象 是数据库设计人员和用户交流的工具 因此要求概念数据模型一方面应该具有较强的语义表达能力 能够方便 直接地表达应用中的各种语义知识 另一方面应该简单 直观和清晰 能为不具备专业知
  • python前端学习-----Flask进阶

    Flask进阶 Flask请求 Request请求对象 request args get 获取表单提交的信息 请求钩子 Flask响应 json 数据格式 Cookie 和 Session Cookie 对象 Session对象 设置密钥的
  • VMware centos7 Destination Host Unreachable

    现象 不管是ping网关还是外网都出现了 root rocketmqOS ping 192 168 23 2 PING 192 168 23 2 192 168 23 2 56 84 bytes of data From 192 168 2
  • jsp文件上传图片到服务器

    jsp文件上传图片到服务器 首先利用onchange去调用uploadBookImg函数 将图片上传到服务器 返回一个地址 将地址写入到一个隐藏域里面 提交表单的时候就可以将服务器返回的地址存入到数据库里面
  • 解决Django和Flask的跨域问题

    目录 2 1 概念 什么是同源 2 2 概念 什么是跨域请求 2 3 概念 浏览器的 同源策略 2 3 1 发生了跨域请求 浏览器在遵循 同源策略 下 处理流程如下 2 3 2 没有发生跨域请求的情况下浏览器会直接发送请求 如下图 3 解决
  • 使用obsidian的模板插件templater来自动化分类笔记记录

    在记笔记的过程中 不难发现为了笔记不那么凌乱 不得不去分类笔记以及为笔记打上元数据 这些步骤基本都是机械重复的 往往有时候只是想快速将内容记录下来 但是等到分类完 元数据写完 已经快要遗忘原本需要记录的内容 即使将这些步骤挪至最后完成 也显

随机推荐

  • TDengine安装使用

    引言 近期 听说了时序数据库TDengine 本人的好奇心又出来了 同是时序数据库的InfluxDB不也挺好的嘛 通过一些网上的资料以及些简单的实际操作 本人得出的结论是 数据量少时 InfluxDB的性能好些 当数据量越来越大之后 TDe
  • matlab 贝叶斯网络

    第一次搭建 参考教程https blog csdn net moodytong article details 8122327 我的matlab是2014a 系统win7旗舰 下面就开始一步一步来 一 matlab中添加FULLBNT FU
  • java 导出Excel设置宽度自适应

    private static void setAutoColumnWidth XSSFSheet sheet int maxColumnNum try 获取当前列的宽度 然后对比本列的长度 取最大值 for int columnNum 0
  • 卷积神经网络的实际应用,卷积神经网络毕业论文

    旷视首席科学家 知名AI学者孙剑博士去世 他在该领域有哪些贡献 旷视首席科学家 知名AI学者孙剑博士去世 他在该领域有哪些贡献 在学术层面 孙老师是计算机视觉领域全世界最知名 最顶级的一批科学家 他的工作ResNet 12w citatio
  • 西安华为OD面试经验(德科)

    背景 本科某双非邮电软件专业 二战冲985失败 随便写的简历挂boss上 hr电话联系帮我约的机考 华为od网络风评很差 这一点还是hr告诉我这个初入社会的学生党的 态度挺诚恳 我也只是本着随便试试的态度去的 机考是5 7号 技术一面是5
  • SSC 扩频时钟技术(1)

    SSC 全称Spread Spectrum Clocking 即扩频时钟 由于信号的辐射主要是由于信号的能量过于集中在其载波频率位置 导致信号的能量在某一频点位置处的产生过大的辐射发射 因此为了进一步有效的降低EMI辐射 芯片厂家在设计芯片
  • 通过 window.opener.document 获取弹窗弹窗或打开页面中的数据并回显

    通过 window opener document 获取弹窗弹窗或打开页面中的数据并回显 1 html 示例 写法 td td
  • tcp客户/服务器回射程序之五-----用shutdown函数解决在批量方式下所引起的问题

    tcp客户 服务器回射程序之五 用shutdown函数解决在批量方式下所引起的问题 当我们把标准输出和标准输入重定向到文件来运行新的客户程序时 却发现输出文件总是小于输入文件 而对于回射服务器而言 它们应该相等 问题的起因在于我们对于EOF
  • python十个实战项目

    python项目练习一 即时标记 python项目练习二 画幅好画 python项目练习三 万能的XML python项目练习四 新闻聚合 python项目练习五 虚拟茶话会 python项目练习六 使用CGI进行远程编辑 python项目
  • 目标检测算法之YOLOv2损失函数详解

    前言 前面的YOLOv2推文详细讲解了YOLOv2的算法原理 但官方论文没有像YOLOv1那样提供YOLOv2的损失函数 难怪Ng说YOLO是目标检测中最难懂的算法 今天我们尝试结合DarkNet的源码来分析YOLOv2的损失函数 关键点回
  • 终于辞职了,全职ue了

    终于辞职了 然后 这几天睡得特别香 拿到了ue的offer 两万五 从年前开始 其实本来不想辞职 毕竟还是疫情 工作不好找 一年半简历也不好看 但是最终还是走了这一步 外因 1 全员降薪到80 士气打击的厉害 我觉得是不是自己飘了 以自己的
  • 搭建harbor私有镜像仓库

    一 环境准备 1 关闭防火墙 systemctl stop firewalld 禁止防火墙开机自起 systemctl disable firewalld 2 关闭selinux 永久关闭 sed i s enforcing disable
  • 简述Java中的基本数据类型

    本文主要向大家介绍一下Java中的8种基本数据类型 以及数据类型之间的转换 希望对大家学习Java语言有所帮助 一 数据类型的分类 一 基本数据类型 8种 注意 在Java中 所有数据类型都有默认值 定义之后没有赋值 就会有默认值 且默认值
  • 计算机心理活动,计算机科学系关于心理活动的总结

    计算机科学系关于心理活动总结 一 活动概况 时间 10月22 23 25 29 30日 11月5 6 12日 地点 新区湖畔绿地或老区西操场 人员 商丘师院10级新生以及各系心理委员组长 二 活动目的 1 通过游戏等活动的形式带给同学们人生
  • matlab中的符号表达式的使用

    定义了一个表达式 如 y sin x 如何让matlab知道x是自变量 y是因变量 并且y x0 这种格式合法 求出x x0时候的值 三种方法 1 用inline函数 格式 FunctionName inline 任何有效的表达式 表达式中
  • ITextRenderer 生成PDF 文件

    pom xml 文件添加相关依赖
  • django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required 简单的解决办法

    在Django的工程同名子目录的 init py文件中有如下语句 import pymysql pymysql install as MySQLdb 使用django2或者django3时遇到这个报错 django core excepti
  • LeetCode每日刷题:存在重复的元素II

    题目 给定一个整数数组和一个整数 k 判断数组中是否存在两个不同的索引 i 和 j 使得 nums i nums j 并且 i 和 j 的差的 绝对值 至多为 k 解题思路 这道题有三种解法 暴力 滑动窗口 Set 暴力解法 循环遍历数组
  • wifi密码本 字典(免费)

    需要自取 链接 https pan baidu com s 1ffGwfcvoqkrIgDIOeC3 IA 提取码 ao1i 破解fiwi密码教程 破解wifi密码 暴力破解 保姆式教学 Z Xshan的博客 CSDN博客 如果提取码失效试
  • push 和 pop 函数的使用

    include