C++ 定时器触发
c++定时器,能够定时触发,即每隔一段固定时间执行一下函数
#include <iostream>
#include <thread>
#include <chrono>
#include <signal.h>
#include <time.h>
#include <cstring>
#include <glog/logging.h>#define EVENTSAVERTIMER_SIG (SIGRTMIN + 14) // 设置信号
#define EvensTimerPeriod (5) // 5ms// 定时器处理函数
void timerHandler(int sig, siginfo_t *si, void *uc) {LOG(ERROR) << "Timer triggered!" << std::endl;
}void EventSaverTimerInit(void)
{/*配置一个Posix timer*/timer_t TimerPulse;struct sigevent Timer1_Pulse_Sig;struct sigaction Timer1_Pulse_Sa;struct itimerspec Timer1_Pulse_it; // 匹配pulse类型定时器1 的timer设定参数int res;Timer1_Pulse_Sa.sa_flags = SA_SIGINFO | SA_RESTART;Timer1_Pulse_Sa.sa_sigaction = timerHandler;sigemptyset(&Timer1_Pulse_Sa.sa_mask);if (sigaction(EVENTSAVERTIMER_SIG, &Timer1_Pulse_Sa, NULL) == -1){perror("sigaction");}memset(&Timer1_Pulse_Sig, 0, sizeof(Timer1_Pulse_Sig));// 信号量配置Timer1_Pulse_Sig.sigev_value.sival_ptr = &TimerPulse;Timer1_Pulse_Sig.sigev_notify = SIGEV_SIGNAL;Timer1_Pulse_Sig.sigev_signo = EVENTSAVERTIMER_SIG;res = timer_create(CLOCK_REALTIME, &Timer1_Pulse_Sig, &TimerPulse);if (res != 0){perror("TimerPulse create Error");return;}Timer1_Pulse_it.it_value.tv_sec = 0; // 定时器第一次触发的时间, 启动延时时间 5 msTimer1_Pulse_it.it_value.tv_nsec = 5 * 1000 * 1000;Timer1_Pulse_it.it_interval.tv_sec = 0; // timer周期Timer1_Pulse_it.it_interval.tv_nsec = EvensTimerPeriod * 1000 * 1000; // 10 ms, 纳秒,微秒,毫秒,秒/*结束配置一个Poisix timer*/res = timer_settime(TimerPulse, 0, &Timer1_Pulse_it, NULL);if (res){perror("TimerPulse settime Error");return;}
}int main() {// startTimer();EventSaverTimerInit();// 主线程继续执行其他操作for (int i = 0; i < 100; ++i) {// std::cout << "Main thread doing work: " << i << std::endl;std::this_thread::sleep_for(std::chrono::seconds(1));}// 关闭gloggoogle::ShutdownGoogleLogging();return 0;
}
编译
g++ test.cpp -lrt -lglog
相关文章:
C++ 定时器触发
c定时器,能够定时触发,即每隔一段固定时间执行一下函数 #include <iostream> #include <thread> #include <chrono> #include <signal.h> #include <time.h> #include <cstring> #include <glog/logging.h>#…...
【Docker 入门】
文章目录 概要 一、安装Docker CE1.1.配置阿里云镜像加速【可选】1.2.重启 二、Docker版本选择三、Docker指令1.Docker命令1.1.run1.2.start/stop/restart1.3.kill1.4.rm1.5.create1.6.ps1.7.exec1.8.top1.9.port 2.Dockerfile关键字3.镜像打包4.镜像运行5.镜像导入导出6.镜像查…...

现在有什么副业可以让人快速上岸?可以试试这个行业上岸其实不难
人为什么要努力赚銭? 当你想结婚的时候, 你可以慢慢挑,不着急。 当父母年老遭遇大病的时候, 你有机会尽孝。 当孩子需要时,你不会囊中羞涩。 年轻时以为金钱最重要, 如今年纪大了,发现这…...
每天一个数据分析题(四百二十)- 一元线性回归模型
现在通过参数估计得到一个一元线性回归模型为y 3x4,在回归系数检验中下列说法错误的是( ) A. 检验统计量是t统计量 B. 原假设是β13 C. 若拒绝原假设,就认为自变量与因变量存在显著的线性关系 D. 可以用P值与显著性水平比较结…...
day11:01文件处理
一、文件与文件模式介绍 1、什么是文件 文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口 用户/应用程序(open()) 操作系统(文件) 计算机硬件(硬盘)2、为何要用文件 ①用户/应用程序可以通过文件将数据永久保存…...

一场夏测杀出个“双冠王”,极越01成为纯电SUV标杆
文 | AUTO芯球 作者 | 雷慢 万万没想到,懂车帝夏测运动会杀出一匹最大的黑马,竟然是极越01。 当前正在进行的懂车帝夏测运动会,在“纯电SUV/MPV续航达成率”赛事中,极越01以85.8%的续航达成率获得第一名。并且由于赛制规则限制…...
外科休克病人的护理
一、引言 休克是外科常见的危急重症之一,它是由于机体遭受强烈的致病因素侵袭后,有效循环血量锐减、组织灌注不足所引起的以微循环障碍、细胞代谢紊乱和器官功能受损为特征的综合征。对于外科休克病人的护理,至关重要。 二、休克的分类 外科休克主要分为低血容量性休克(包括…...

C-study(五).2
逻辑运算符 连接两个完整的关系表达式。 && 逻辑与,ab都为真时,a&&b的值真,其余时候假。 || 逻辑或,ab都为假时,a||b的值假,其余时候真。 ! 逻辑非、只需要一个运算对象,a真&a…...
使用Ultralytics YOLO进行模型验证
使用Ultralytics YOLO进行模型验证 使用Ultralytics YOLO进行模型验证简介为什么使用Ultralytics YOLO进行验证?验证模式的主要功能使用示例YOLO模型验证参数使用参数进行验证的示例使用Ultralytics YOLO进行模型验证 简介 验证是机器学习管道中的关键步骤,可以评估训练模型…...
MICCAI 2023 List of Papers
MICCAI 2023 - Accepted Papers, Reviews, Author Feedback List of Papers https://conferences.miccai.org/2023/papers/ • 3D Arterial Segmentation via Single 2D Projections and Depth Supervision in Contrast-Enhanced CT Images • 3D Dental Mesh Segmentation U…...
压缩文件的解析方式
一、解压缩zip格式 步骤: 1.根据压缩文件原始路径(字符串),创建源文件对象(File对象) 2.创建根目录对象,传入源文件的根目录 3.判断根目录,是否已经存在 ①如果存在,则删除; ②如果不存在,则创建根目录。 4.可以用Zip…...
rocket mq保证消息幂等性
在互联网应用中,尤其在网络不稳定的情况下,消息队列 RocketMO 的消息有可能会出现重复,这个重复简单可以概括为以下情况: 1、发送时消息重复 当一条消息已被成功发送到服务端并完成持久化,此时出现了网络闪断或者客户端宕机&…...
Elasticsearch基本操作
文章目录 1.1 索引库操作1.1.1 创建索引库 :1.1.2 删除索引库 :1.1.3 判断索引库是否存在 1.2 文档操作1.2.1 新增文档1.2.2 查询文档1.2.3 删除文档1.2.4 修改文档1.2.5 批量导入文档 1.3 RestClient查询1.3.1 普通查询1.3.2 复合条件查询1.3.3 分页排序查询1.3.4 高亮分页查询…...

设计模式探索:责任链模式
1. 什么是责任链模式 责任链模式 (Chain of Responsibility Pattern) 是一种行为型设计模式。定义如下: 避免将一个请求的发送者与接收者耦合在一起,让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并且沿着这条链传递请求&…...
OceanBase 配置项系统变量实现及应用详解(3):新增配置项的方法
本专题的第一篇文章,配置项的定义及使用方法,详细阐述了配置项的基础用法。对于那些对源码抱有浓厚兴趣的同学来说,或许还希望深入了解配置项的实现原理,甚至渴望亲自添加新的配置项,以满足个性化的功能需求。 本文通…...

PCI PTS 硬件安全模块(HSM)模块化安全要求 v5.0
符合条件的 PCI SSC 利益相关者在 30 天的意见征询 (RFC) 期间审查 PCI PTS 硬件安全模块 (HSM) 模块化安全要求 v5.0 草案并提供反馈。 PCI PTS 硬件安全模块(HSM)模块化安全要求 v5.0图 从 7 月 8 日到 8 月 8 日,邀请符合条件的 PCI SSC 利益相关者在 30 天的意见…...

javaweb中的请求与响应--基于postman工具的应用(附带postman的详细安装步骤)
一、前言 后端的第一天感觉难度就上来了,可能是基础太过薄弱了吧。目前看视频已经有点跟不上了,果然15天想要拿下还是太勉强了点。30天还差不多。不知道读者们有没有好好的去学这方面的知识,没有什么是学不会的,关键是坚持。 Po…...

StarRocks下载使用说明和基础操作
简介 StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。StarRocks 既支持从各类实时和离线的数据源高效导入数据,也支持直接分析数据湖上各种格式的数…...
桥接模式案例
桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化。桥接模式通过创 建一个桥接接口,将抽象部分和实现部分连接起来,从而实现两者的解耦。下面是一个详细的桥接…...

Spring源码二十二:Bean实例化流程五
上一篇Spring源码二十一:Bean实例化流程四,咱们主要分析里createBeanInstance方法Spring给我们提供给的FactoryMethod方法,举例说明了factoryMethod属性如何使用,同时简单讨论了具体实现逻辑。 这一篇咱们将进入反射实例化Bean&am…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...

STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...