- 博客(12)
- 资源 (9)
- 收藏
- 关注
原创 C++多线程之线程管控
摘要:本文详细介绍了C++11标准库中的线程操作,主要内容包括:1. 线程创建方式(普通函数、函数对象、lambda表达式)及避免被解释为函数声明的方法;2. 线程分离(detach)和等待(join)的实现,包括异常情况处理和RAII技术应用;3. 线程参数传递机制(普通参数、指针、引用、成员函数、unique_ptr等);4. 线程归属权转移的实现方法;5. C++20新增的jthread特性及其自动join和中断机制;6. 运行时线程数量选择策略;7. 线程ID的获取和应用场景。文章通过代码示例展示了
2025-06-02 17:20:17
519
原创 C++新特性之文件系统std:: filesystem,文件和目录操作
C++ Filesystem库是C++17标准的一部分,它的出现填补了C++长久以来在文件和目录操作方面的空白。在这之前,开发者通常需要使用操作系统特定的API或第三方库。年份发展事件2011Boost Filesystem库发布2014C++14标准发布,但未包含Filesystem库2017C++17标准发布,正式引入Filesystem库。
2025-05-29 14:32:18
1009
原创 C++新特性之Lambda表达式
本文系统介绍了C++中Lambda表达式的语法、特点与应用。首先阐述了Lambda的基本语法结构,包括捕获列表、参数列表、返回类型和函数体的定义方式。重点分析了四种捕获方式:值捕获、引用捕获、隐式捕获和初始化捕获的特点与区别。随后探讨了Lambda表达式的实现原理,说明其本质是重载operator()的匿名类对象。文章详细介绍了各C++标准对Lambda的扩展,包括C++14的泛型Lambda、C++17的*this捕获、C++20的模板参数等新特性。最后列举了Lambda在排序算法、函数绑定、线程编程等场
2025-05-25 19:28:16
911
原创 C++新特性之智能指针
本文系统介绍了C++智能指针的核心概念与应用。首先阐述了智能指针通过RAII机制自动管理动态内存的特性,分析了auto_ptr、unique_ptr、shared_ptr和weak_ptr四种智能指针的实现原理与适用场景。重点讲解了shared_ptr的引用计数机制及其线程安全问题,以及weak_ptr解决循环引用的方法。详细探讨了智能指针的拷贝问题解决方案,包括管理权转移和引用计数等技术。最后介绍了自定义删除器的实现方式及其在资源管理中的应用。全文通过大量代码示例,深入解析了智能指针的设计思想与使用技巧,
2025-05-23 21:45:53
755
原创 C++新特性之四种类型转换
该文介绍了C++中的四种类型转换的具体使用场景和使用方法:const_cast、static_cast、dynamic_cast和reinterpret_cast
2025-05-11 23:14:51
725
原创 现代C++设计模式之单例模式
双重检验锁定模式简单地说,与上面的方法的区别是:上面的方法中,是先获取锁,再检查空指针,如果指针为空,则创建对象实例;而双重检验锁定模式重,先检查一次空指针,如果指针为空,则获取锁,再检查指针,如果仍为空,则创建对象实例。总之,到这里,我们知道了一件事:C++11 标准库中提供了方法,可以让某件事只做一次(比如初始化一次),不管调用了几次,不管是不是多线程调用的,最终一定只执行一次。配置文件管理器,日志记录器,数据库连接池,线程池,全局缓存,窗口管理器,硬件访问,任务管理器,负载均衡器。
2024-08-16 10:33:33
809
原创 [c++]内联函数(inline)详解
1)宏是预处理指令,在预处理的时候把所有的宏名用宏体来替换;内联函数是函数,在编译阶段把所有调用内联函数的地方把内联函数插入;2)宏没有类型检查,无论对还是错都是直接替换;而内联函数在编译时进行安全检查;3)宏的编写有很多限制,例如只能写一行,不能使用return控制流程等;4)对于C++ 而言,使用宏代码还有另一种缺点:无法操作类的私有数据成员。
2024-03-24 18:16:22
450
原创 adapter适配器模式
//目标接口(新接口)class ITarget{public: virtual void process()=0;};//遗留接口(老接口)class IAdaptee{public: virtual void foo(int data)=0; virtual int bar()=0;};//遗留类型class OldClass: public I...
2019-06-19 16:22:41
227
转载 C++ memory order
导语: C++ 11与JDK 1.9都新增了对memory order的支持,对于memory order这个概念,本文试图阐述清楚与它相关的问题的由来,概念定义以及c++ 11与jdk 1.9对其的支持。Memory Model在分析memory order之前,我们先讲一下为什么要考虑memory order问题,这里需要简单分析一下多线程编程环境中的内存模型。上图所示的是...
2019-05-18 00:00:02
1039
转载 把vim打造成牛逼的C++ IDE
欢迎使用Markdown编辑器写博客对于windows上做C++开发的用户来说,vs为他们做了大量的工作,语法高亮、自动缩进、智能提示等等,当你happy的使用vs时,请记住一点,这是一个收费软件,虽然在我大中华普遍都在使用微软的盗版软件,但作为程序员我们心里应该知道这是不对的行为,然后再去——等等,我们今天讨论的不是这个话题,我们要说的是Linux下的免费软件vim!vim插件安装的教程在互联网上
2016-12-07 00:45:39
1522
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人