自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 从竞态到原子:pread/pwrite 如何重塑高效文件 I/O?

本文深入探讨了Linux/Unix系统中的pread()和pwrite()系统调用,对比传统的read()/write()+lseek()组合,突出了其优势所在。在多线程环境下,传统方法因共享文件偏移量会导致竞争条件,需要额外加锁。而pread()和pwrite()通过将定位与读写合并为原子操作,既不改变文件偏移量,又保证了线程安全,特别适合多线程编程和随机I/O场景。文章通过代码示例展示了更简洁的使用方式,并总结了适用场景,建议在需要精确控制文件位置或并发访问时优先选用这两个系统调用。

2025-09-03 21:30:00 626

原创 别再让分散 IO 拖慢性能!struct iovec:高效处理聚集 IO 的底层利器

`struct iovec` 本身不直接实现零拷贝,但它是**零拷贝技术处理 “分散数据” 时的关键载体**。其核心价值体现在...

2025-09-02 21:00:00 766

原创 SCP 高效安全实战指南:远程传文件不泄露、不卡顿,运维必备

SCP凭借其安全、简单、高效的特性,成为系统管理员、开发者和IT专业人员在不同主机间传输文件的得力助手。掌握其基础命令和高级技巧,能让你在日常工作中更加游刃有余。无论是简单的单文件传输,还是复杂的自动化脚本,SCP都能可靠地完成任务。下次需要在服务器间移动数据时,不妨试试SCP吧!

2025-09-01 21:15:00 881

原创 一文读懂 Qwen2.5:从模型特性到多框架部署全指南

《Qwen2.5大模型部署全攻略》 阿里巴巴推出的Qwen2.5系列大模型在知识储备、代码能力、数学推理等五大核心维度实现全面升级,提供从0.5B到72B的多参数版本选择。本文详细介绍了四种部署方案: ModelScope本地部署:适合开发者调试,提供从环境配置到模型测试的完整流程,包括CUDA版本检查、PyTorch安装等关键步骤。 ModelScope线上部署:零硬件门槛方案,通过阿里云免费算力快速体验模型性能。 Ollama轻量部署:支持Windows/Linux/Mac多平台,提供一键式运行命令,适

2025-08-28 21:15:00 925

原创 CPU 卡顿时必看!mpstat:堪比瑞士军刀的性能工具,精准定位负载问题

它是 Linux 系统上 Sysstat 工具包中的一个组件,能提供详尽到每个 CPU 核心的性能数据,是系统管理员和运维工程师进行性能排查的必备工具。它就像一个专业的汽车仪表盘,不仅告诉你车速(整体CPU使用率),还告诉你发动机转速(%usr)、变速箱状态(%sys)、是否在等待燃油喷射(%iowait)以及是否有外部阻力(%steal)。的输出,看所有核心的利用率是否大致均匀。如果负载不均,可能意味着应用的线程调度或任务分配算法有待优化,或者需要考虑进行 CPU 绑核(CPU affinity)设置。

2025-08-28 19:00:00 438

原创 拒绝 “重量级” 冗余!ifstat:轻量却能打,搞定网络流量监控就靠它

在日常的服务器运维、应用性能排查或仅仅是好奇自己的电脑网络状况时,我们常常需要快速回答一个简单的问题:**我的网络接口每秒到底在传输多少数据?**虽然 `iftop` 可以显示详细的连接信息,`iperf` 擅长进行带宽测试,但它们有时显得“太重”了。今天,我们来认识一个轻巧、简洁而直接的网络监控工具—— **`ifstat`**。它就像网络世界的速度表,专注于一件事:实时报告每个网络接口的发送和接收速率。

2025-08-28 14:08:41 556

原创 别再只会看 top!vmstat 才是系统监控的 “隐藏王者”,一文吃透性能排查

在日常的系统运维、开发调试乃至性能测试中,我们经常会遇到这样的问题:服务器突然变慢了,应用响应延迟,但根源在哪里?是CPU饱和了?内存耗尽了?还是磁盘I/O成了瓶颈?此时,一个轻量级但功能强大的命令行工具——`vmstat`,就成了我们定位问题的首选利器。

2025-08-27 21:15:00 1696

原创 为什么 “int& &&” 会变成 “int&”?C++ 引用折叠的原理与本质详解

引用折叠规则是C++模板元编程和完美转发中的核心概念,它定义了当引用类型嵌套时会发生什么。理解这个规则对于掌握现代C++特性至关重要。

2025-08-27 21:00:00 273

原创 深入理解C++ std::forward:完美转发的原理与应用

在C++模板编程中,我们经常遇到一个棘手问题:如何将参数原封不动地传递给另一个函数?这里的"原封不动"包括参数的值类别(value category)——即到底是左值还是右值。

2025-08-27 20:45:00 971

原创 超越函数指针:深入理解与灵活运用 std::function 和 std::bind

这是一篇关于 `std::function` 和 `std::bind` 的详细博客分享,旨在帮助读者深入理解并灵活运用这两个强大的 C++11 工具。

2025-08-26 19:53:47 263

原创 掌握C++ std::invoke_result_t:类型安全的函数返回值提取利器

在C++模板元编程和泛型编程中,我们经常需要知道一个可调用对象(函数、函数指针、lambda表达式、函数对象等)的返回类型。传统的`decltype`虽然强大,但在处理复杂情况时显得力不从心。C++17引入的`std::invoke_result_t`为我们提供了一种类型安全、表达清晰的方式来获取可调用对象的返回类型。

2025-08-25 20:45:00 414

原创 深入解析 std::enable_if:原理、用法与现代 C++ 实践

本文深入解析了C++中的std::enable_if机制,主要内容包括: 理论基础:介绍了SFINAE(替换失败非错误)原则,这是std::enable_if实现的核心机制; 实现原理:剖析了std::enable_if的模板实现,展示了如何通过条件特化控制类型成员的存在性; 核心用法:详细讲解了在函数返回类型、参数、模板参数及构造函数中使用std::enable_if的多种方式; 实战应用:提供了安全数据访问函数等实际案例,演示如何基于类型特性选择不同实现。 std::enable_if是C++模板元编程

2025-08-24 13:42:38 892

原创 深入理解 C++ SFINAE:从编译技巧到现代元编程的演进

这是一篇关于 C++ SFINAE 技术的详细博客文章。我们将从基本概念出发,逐步深入到高级用法和现代替代方案。

2025-08-23 17:56:48 697

原创 Traceroute命令使用大全:从原理到实战技巧

Traceroute的核心价值在于精准定位网络路径故障。掌握其协议切换(-I-T)、参数调优(-q-m)和结果解析能力,可高效解决跨网段延迟、防火墙拦截及节点宕机等问题。结合pingmtr等工具,构建完整的网络诊断体系,大幅提升运维效率🚀。扩展阅读Wireshark协议分析。

2025-08-13 19:00:00 848

原创 C++锁的艺术:如何优雅地实现线程安全swap操作?

互斥锁(mutex):保证临界区互斥访问的基本同步原语锁守卫(lock_guard)RAII包装器,确保锁的释放不可复制/移动,严格作用域绑定死锁避免固定锁定顺序同时锁定(std::lock)超时机制(try_lock)异常安全即使swap抛出异常,锁也能正确释放没有资源泄漏风险。

2025-08-12 19:43:40 1254

原创 内存顺序、CAS和ABA:std::atomic的深度解析

是一个模板类,位于<atomic>头文件中,用于封装基本类型(整数、指针等)并提供原子操作。其核心特点是保证操作的原子性可见性和顺序性。// 声明一个原子整型变量虽然int y;// 可能使用内部锁可平凡复制(TriviallyCopyable)无用户定义拷贝/移动操作使用检查是否真正无锁✅简单共享状态(标志位、计数器)✅无锁数据结构(队列、栈、链表)✅性能关键区的轻量级同步✅跨线程信号传递❌ 需要保护多个相关变量❌ 需要等待特定条件❌ 操作涉及复杂业务逻辑。

2025-08-12 19:37:58 1097

原创 深入解析std::atomic的exchange与compare_exchange操作

线程1读取值A线程2修改值为B线程3修改值为A线程1的CAS操作成功(值仍为A),但数据结构已改变ABA问题详细介绍exchange当需要无条件设置新值并获取旧值时使用适合标志位切换、所有权转移在循环中更新值时首选无锁数据结构的核心高性能要求的场景当需要单次尝试时避免虚假失败的场景简化错误处理逻辑“选择正确的原子操作,如同选择正确的锁——它决定了并发性能的边界。” - C++并发艺术。

2025-08-12 19:33:39 702

原创 并发编程中的 ABA 问题:从原理到实战解决方案

一个值从 A 变成 B,又变回 A,此时 CAS 操作会误认为 “值没变” 而成功执行,但中间的状态变化可能已经导致逻辑错误。ABA 问题的本质是 “状态表象相同但历史不同”,其危害在于隐蔽性强(99% 场景不触发)、破坏性大(直接导致内存错误)。不让 “旧状态” 被误认为 “未变”—— 无论是通过 GC 阻止内存重用、危险指针标记使用中对象,还是标签指针跟踪版本变化,本质都是打破 “A→B→A” 的迷惑性。在实际开发中,建议优先使用语言自带的并发工具(如 Java 的。

2025-08-12 19:29:14 771

原创 《C++中 type_traits 的深入解析与应用》

是 C++ 泛型编程的 “瑞士军刀”,它将类型处理的逻辑从运行时提前到编译期,既保证了代码的灵活性和复用性,又不牺牲性能。无论是开发通用库、优化并发代码,还是构建复杂的元编程逻辑,都是不可或缺的工具。掌握它,你将能写出更安全、更高效、更优雅的 C++ 泛型代码,真正发挥 C++ 类型系统的强大威力。

2025-08-11 17:10:15 885

原创 终篇:协议原理与大师之路

🌟 Netstat深度解析与性能优化指南 本文深入剖析Netstat工具的核心原理与实战应用,涵盖以下关键内容: TCP状态机详解:图解三次握手/四次挥手过程,解析各状态(SYN_SENT、ESTABLISHED等)的实际意义,特别说明TIME_WAIT状态的2MSL等待机制。 内核调优方案:提供TIME_WAIT优化矩阵、连接风暴防御参数,包含具体调优命令和验证方法,如net.ipv4.tcp_tw_reuse等关键参数配置。 监控架构设计:突破Netstat局限,构建基于Prometheus+Graf

2025-08-11 10:00:00 888

原创 ⚡ 第五篇:进阶技巧与扩展工具

《超越 Netstat:高效替代工具与自动化分析》,截图发送队列(Send-Q)状态分享到评论区!:关联进程、文件、网络三要素。使用 netstat。

2025-08-11 08:00:00 627

原创 第四篇:实战场景与跨平台案例

问题类型排查命令关键指标端口冲突netstat -tulnp | grep <端口>LISTEN状态 + 进程名连接失败netstat -an | grep <端口>SYN_SENT(本地)/ 无ESTABLISHED性能瓶颈TCP重传率 >1%安全入侵异常IP + 非常用端口🔧跨平台口诀Linux权限用sudo,Windows进程靠-o监听要看0.0.0.0,安全先封异常IP下一篇预告🔥《超越 Netstat:高效替代工具与自动化分析》ss命令秒级扫描万级连接用lsof。

2025-08-10 10:00:00 394

原创 第三篇:输出解析与关键状态诊断

状态健康建议故障响应动作LISTEN关键服务端口必须存在缺失 → 启动服务监控数量突增(防DDoS)突增 → 封禁异常IPSYN_RECV数量应接近0>10 → 检查SYN Flood攻击CLOSE_WAIT单进程<10堆积 → 重启进程或修复代码TIME_WAIT总量<1000(默认安全)过多 → 内核参数调优🔧终极诊断命令# Linux 全维度检查(连接+进程+统计)下一篇预告🔥《Netstat 实战指南:从端口冲突到性能调优》

2025-08-10 08:00:00 721

原创 第二篇:Netstat 核心参数详解与组合技巧

三条黄金法则1️⃣基础扫描-tuln(监听端口) +-an(所有连接)2️⃣深度诊断-s(统计) +-p(进程) +grep/awk(过滤)3️⃣动态监控-c(Linux)或定时刷新(Windows)避坑口诀Windows 要 -o,Linux 需 sudo数字格式加 -n,实时监控 -c 走下一篇预告🔥《读懂 Netstat 输出:TCP 状态与异常排查指南》图解 TCP 状态机:从SYN_SENT到TIME_WAIT实战解析CLOSE_WAIT泄露的解决方案。

2025-08-09 10:00:00 1082

原创 第一篇:Netstat 基础认知与跨平台差异

为什么2025年仍要学 netstat?零成本:操作系统原生集成,无需安装通用性:Windows/Linux/macOS 通吃不可替代:快速验证端口监听的基础能力无可比拟记住黄金命令# Linux 快速诊断监听端口 netstat -tulnp # Windows 定位端口占用进程 netstat -ano | findstr :443下一篇预告🔥《Netstat 命令实战:参数组合与高效用法》深度解析-s统计信息中的TCP重传率高阶组合命令:动态监控、路由表分析用awk。

2025-08-09 08:00:00 486

原创 Netstat功能参数

以下是netstat。

2025-08-08 20:05:00 151

原创 一次血泪教训:SIGPIPE 是如何悄无声息地 “团灭” 我的服务的?

这次由SIGPIPE尤其在多线程环境下,一个失效连接的写入操作就能导致整个服务崩溃,且默认不留痕迹(无 coredump)。strace -f** 是诊断利器:** 对于多线程程序崩溃,一定要加上-f选项跟踪所有线程。对于服务端程序,强烈建议在启动时全局忽略SIGPIPE信号。这是防止进程意外退出的关键防线。忽略SIGPIPE只是第一步,核心是必须严格检查和处理writesend等调用返回的EPIPE错误(以及其他可能的错误)。忽略错误等于埋下新的炸弹。了解SIGPIPE。

2025-08-08 17:43:07 690

原创 深入理解 C++ 中的stdpriority_queue:从原理到实战的高效优先级管理

在算法和系统设计中,优先队列是一种特殊的队列数据结构,它打破了普通队列 “先进先出(FIFO)” 的规则,而是让优先级最高的元素始终最先出队。这种特性使其成为处理动态排序场景的理想选择。C++ 标准库通过提供了封装完善的实现,它本质是容器适配器(Container Adapter),而非独立容器。其底层默认基于构建二叉堆(Binary Heap)结构,这使得插入和删除操作能保持O(log n)的高效复杂度,远优于数组的O(n)操作。当处理复杂对象时,默认比较器无法满足需求,此时需要自定义比较逻辑。

2025-08-06 21:00:00 1032

原创 深入解析系统调试利器:strace 从入门到精通

从简单的 “文件找不到” 到复杂的性能瓶颈,从用户态到内核交互,可以把它理解为程序与内核之间的 “API 接口”,程序通过这些接口获取内核提供的服务。犹如一把精密的手术刀,能够深入程序的底层行为,揭示那些隐藏在日志与表象之下的真相。它只能看到程序与内核交互的部分,看不到程序内部的函数调用。这个报告能快速定位消耗 CPU 时间最多的系统调用,是性能优化的重要参考。随着实践深入,你会逐渐体会到 “看系统调用知程序行为” 的调试境界。简单来说,它能记录程序与操作系统内核之间的每一次 “对话”。

2025-08-06 20:32:06 1345

原创 Netcat终极实战指南:从端口扫描到渗透测试

以下是一篇深度解析 **`nc` (Netcat)** 命令的博客,每个示例都附有详细的技术解析和场景说明,帮助读者真正掌握这一"网络瑞士军刀":

2025-07-31 19:57:42 914

原创 Linux神兵利器lsof:透视进程资源占用的终极指南

本文是一份全面的lsof命令终极指南,新增12个实用示例并详解命令构造逻辑。主要内容包括:lsof核心认知(Linux一切皆文件)、命令构造公式(筛选条件、组合逻辑、输出控制)、12大高频场景实战(文件占用、网络连接、磁盘空间、进程资源等)、输出深度解析(关键字段、FD解码、网络连接分析)、6大避坑指南以及场景速查表。重点讲解了如何精准诊断文件占用、网络连接、资源泄漏等问题,并提供了28个即用示例和命令构造思路,帮助用户快速定位和解决系统资源相关问题。

2025-07-30 19:15:00 980

原创 TCPDump实战手册:协议/端口/IP过滤与组合分析指南

本文提供了一份全面的TCPDump实用指南,涵盖基础过滤、组合应用和高级分析技巧。主要内容包括:1)基础速查表(协议、端口、IP过滤);2)组合过滤实战(协议+端口、IP+端口、复杂逻辑);3)高级协议分析(HTTP、DNS、TCP连接问题);4)场景化分析指南(网站访问失败、数据库连接超时等);5)TCP报文深度解析(标志位含义、分析方法与工具)。文章还提供了性能优化技巧和常用命令速查表,帮助网络工程师快速定位和解决各类网络问题。掌握这些技巧可显著提升TCP/IP协议栈的故障排查效率。

2025-07-29 17:26:56 1084 4

原创 解放io_uring编程:liburing实战指南与经典cat示例解析

本文介绍了liburing库的使用方法及其在高性能I/O场景中的优势。文章首先分析了直接使用io_uring原始接口的复杂性,包括手动内存管理和索引计算等问题。通过一个经典的cat程序示例,作者详细讲解了liburing的核心API和工作流程,包括初始化、请求提交、完成事件处理等关键步骤。重点解析了内存对齐(posix_memalign)和柔性数组等关键技术点,并提供了性能对比数据,显示liburing相比传统方式可获得67%的性能提升。文章最后还介绍了批量处理、固定资源注册等高级优化技巧,以及常见的性能问

2025-07-28 19:36:48 981

原创 io_uring_register:io_uring 框架的资源预注册接口

摘要: io_uring_register是Linux io_uring框架的核心系统调用,用于预注册资源以优化异步I/O性能。支持注册缓冲区(IORING_REGISTER_BUFFERS)、文件描述符(IORING_REGISTER_FILES)及事件通知(IORING_REGISTER_EVENTFD)等操作,通过减少重复验证和内存映射开销提升效率。注册时需注意资源生命周期管理、内存锁定限制(RLIMIT_MEMLOCK)及版本兼容性。典型流程包括注册资源、在SQE中引用固定索引、使用后注销。该机制特

2025-07-28 17:25:10 956

原创 io_uring_enter:io_uring 框架的 I/O 提交与事件等待接口

摘要: io_uring_enter是Linux内核io_uring框架的核心系统调用,用于异步I/O请求的提交与完成事件等待。通过共享提交队列(SQ)和完成队列(CQ),支持单次调用同时处理请求提交和结果等待,显著减少系统调用开销。关键功能包括:基于to_submit参数提交SQ中的请求(struct io_uring_sqe),通过min_complete和IORING_ENTER_GETEVENTS标志阻塞等待CQ事件(struct io_uring_cqe)...

2025-07-28 17:00:53 907

原创 io_uring_setup:io_uring 异步 I/O 框架的初始化接口

摘要: io_uring_setup是Linux 5.1+引入的高性能异步I/O系统调用,用于创建包含提交队列(SQ)和完成队列(CQ)的上下文,通过共享内存减少内核态与用户态数据复制,显著提升高并发I/O性能(如数据库场景)。核心功能包括初始化队列、返回文件描述符及支持轮询(IOPOLL)、内核线程调度(SQPOLL)等优化模式。参数entries指定队列大小(内核调整为2的幂),io_uring_params结构传递配置标志(如CPU亲和性)及返回队列偏移量。需通过mmap映射队列到用户空间,支持特性如

2025-07-28 16:45:05 1010

原创 io_uring:Linux异步I/O的革命性突破

本文深入解析Linux高性能I/O框架io_uring的实现原理与应用。作为Linux 5.1引入的异步I/O机制,io_uring通过双环形缓冲区设计(提交队列SQ和完成队列CQ)实现真正的零拷贝异步I/O,相比传统方案(epoll/libaio)性能提升40%-191%。文章详细介绍了其核心数据结构(io_uring_sqe/cqe)、系统调用接口,并给出不依赖liburing的C++实现示例,展示从初始化、请求提交到结果处理的完整流程。

2025-07-24 20:24:59 1112

原创 同步I/O vs 异步I/O:高性能服务器编程的本质选择

本文深入对比了同步I/O与异步I/O的核心差异,详细解析了五种I/O模型的工作流程。通过代码示例展示了阻塞I/O、非阻塞I/O+epoll以及io_uring的实现方式,并提供了性能对比数据(同步阻塞I/O吞吐量<5K QPS,异步I/O可达200-500K QPS)。文章给出了技术选型决策树,建议小型服务用同步阻塞I/O,通用服务用epoll,高性能服务器用io_uring。最后探讨了协程、Reactor/Proactor模式等现代异步编程范式,并指出io_uring将成为未来高性能标准。

2025-07-23 14:45:00 709

原创 终极对决:select vs poll vs epoll 全方位性能对比

Linux高性能服务器编程中,I/O复用技术选型指南:select、poll和epoll全面对比。从事件集合、时间复杂度、最大文件描述符数、工作模式、内核实现和工作效率6大维度分析,epoll在性能(O(1)复杂度)、扩展性(无连接数限制)和功能(支持ET模式)上全面领先。实测数据显示,epoll在10K连接下延迟仅1.3ms,吞吐量达85,000QPS。建议:小规模应用可选select/poll,高并发场景必选epoll(ET模式),新项目可关注io_uring技术。最佳实践包括非阻塞I/O设置、完整读写

2025-07-22 01:30:00 820

原创 高性能I/O的终极武器:epoll深度解析与实战

《深入解析Linux高性能网络编程利器epoll》 摘要:epoll作为Linux高性能网络编程的核心技术,支撑着Nginx、Redis等关键应用。本文系统剖析了epoll三大API接口:epoll_create创建实例、epoll_ctl管理事件、epoll_wait等待事件,并详细对比了水平触发(LT)与边缘触发(ET)模式的核心差异。通过C++实战代码演示了基于epoll的服务器实现,重点分析了ET模式必须使用非阻塞I/O和完全读取数据的关键要点。文章还总结了epoll的高效实现原理(红黑树+就绪链表

2025-07-21 20:18:17 719

基于 poll 的 TCP 多客户端通信程序

一套基于 Linux 系统的 TCP 客户端 / 服务端通信程序,采用 poll 进行 I/O 多路复用,实现了多客户端之间的消息广播功能。服务端支持最多 5 个客户端同时连接,客户端发送的消息会被转发给其他所有在线客户端,适用于简单的局域网聊天场景。 程序包含两个主要部分: 1. 服务端程序:负责监听连接、管理客户端、转发消息 2. 客户端程序:负责与服务端建立连接、发送用户输入消息、接收其他客户端消息

2025-08-10

一段基于 C 语言实现的非阻塞 TCP 连接代码

该代码的核心功能是(有配套介绍文档,可以免费下载学习):创建一个带有超时控制的非阻塞 TCP 连接。具体来说,它能在指定的超时时间内尝试与目标服务器建立 TCP 连接,若连接成功则返回 socket 描述符;若超时或连接失败则返回错误,避免程序因阻塞等待连接而陷入无响应状态。

2025-08-09

下面我将实现一个基于 C++11 的高性能定时器,具备定时执行、周期执行、任务管理、线程安全等特性 这个实现采用了优先级队列管理任务,使用条件变量等待超时,支持任务的添加、删除和取消

这个定时器实现具有以下特点: 功能完整: 1、支持一次性定时任务(addOnce) 2、支持周期性定时任务(addPeriodic) 3、支持取消单个任务(cancel)和取消所有任务(cancelAll) 4、提供获取当前任务数量的接口 线程安全: 1、使用互斥锁(mutex)保护共享数据 2、使用条件变量(condition_variable)实现高效等待 3、所有公共接口都进行了同步处理 高效性能: 1、使用优先级队列(priority_queue)管理任务,快速获取最近要执行的任务 2、采用条件变量的 wait_until 等待机制,避免忙等待 3、任务执行时解锁,允许同时添加新任务 健壮可靠: 1、捕获任务执行中的异常,避免定时器线程崩溃 2、完善的任务状态管理,正确处理已取消的任务 3、资源管理清晰,避免内存泄漏 易用接口: 1、使用 std::chrono 作为时间接口,支持各种时间单位 2、通过 TimerId 标识任务,方便管理 3、直观的函数命名,易于理解和使用 使用时只需包含 timer.h,创建 Timer 对象,然后调用相应的方法添加任务即可。示例代码展示了三种常见用法:一次性任务、周期性任务和取消任务。 这个实现可以满足大多数场景下的定时需求,并且可以根据具体需要进行扩展,如添加任务优先级、线程池执行任务等功能。

2025-08-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除