c++20

fpcc1 天前
c++·c++20
c++20新功能—std::osyncstream在学习多线程编程时,如果使用std::cout进行输出的话,往往发现可能打印的数据会串了行,甚至会出现这个线程的输出结果和另外一个线程的输出结果混在一起了。特别是在实际的应用中,一些多线程中的日志往往更容易出现这种现象,导致开发者得去拆这些日志。 这种现象的原因在操作符“<<”在多线程环境下是安全的(或者说原子的)但往往一个std::cout后面会跟多个“<<”,而这个标准就不保障是原子的了。而线程调用器往往又是随机的,所以就会出现上面的那些情况。
啦啦啦啦啦zzzz8 天前
服务器·算法·哈希算法·c++20·分布式存储
一致性哈希本篇文章基于分布式存储的背景,一致性哈希是分布式存储里面的一种技术,用于多个结点之间分布数据,以最大程度减少添加或删除结点时候的数据重组
keep intensify12 天前
c++·算法·c++20
C++20线程池本实现基于 C++20 标准,摒弃了传统的常规标志位与易错组件。以下是核心代码段的设计动机与原理:为什么使用 std::jthread 而不是 std::thread? std::jthread 提供了自动汇合和协作式中断机制。它的析构函数会自动发出停止请求并阻塞等待线程结束,彻底消除了传统 std::thread 忘记调用 join() 导致程序崩溃的隐患,并且代码更简洁,安全性更高。
繁华的地方不一定留下你的脚印17 天前
c++20
C++20 concepts:把模板要求写在入口,而不是等一屏报错模板函数若只能接收特定类型,最好直接表达这个要求。concepts 让约束成为接口的一部分,调用错误通常也能更早定位到“不满足什么条件”。
码匠许师傅17 天前
c++·tcp/ip·c++20
【C++三方组件】Asio 下篇:C++20 协程版 TCP 客户端与服务端【摘要】:下篇只讲协程一代。同一个回显服务,session 与客户端全部改写为 awaitable 协程:回调嵌套变直线,每连接一个协程天然并发,栈上缓冲靠协程帧保活——上篇的 shared_ptr 纪律整段消失。错误从 handler 的 error_code 变成异常,实测 10061 与 End of file 两条路径。completion token 换成 use_awaitable,其余概念原样复用。附 libevent/libuv/asio 三家终局对照,网络篇至此收官。 【关键词】:Asi
啦啦啦啦啦zzzz1 个月前
linux·服务器·c++·网络编程·c++20
利用RAII机制进行日志的采集对于日志器的组装我们已经完成了一大半了,接下来就是一些比较细节的实现。我们先回顾一下子之前的组成部分,首先是我们自定义了一个buffer,这个buffer是存储我们输出的日志的,由inline和overflow组成,当日志的内容比较小的时候,我们会把日志输出到inline里面,这个inline在栈上,也就是array<char, 128>,而当日志比较多的时候,我们才在堆上开辟内存,vector。
啦啦啦啦啦zzzz1 个月前
c++·算法·c++20
Logger的组装(c++20)本篇文章将综合前几篇文章,appender,format,buffer,组装我们的一个Logger,其作用是可以输出日志到特定的地方。这也是我们日志器的核心部分。
啦啦啦啦啦zzzz1 个月前
linux·服务器·c++·c++20
Appender抽象类的实现c++20本篇文章还是对于日志器的实现,我们的日志输出会输出到不同的地方,有时候是终端,有时候是网络,有时候是文件里面,所以我们需要规定其输出的地方,这也就是appender的作用。
OPEN-F1 个月前
算法·c++20
C++20新特性精讲:概念、范围与三路比较本文是 C++ 系列教程的第 22 篇。上一篇讲解了 C++17 新特性,本篇深入 C++20 新特性:概念(concepts)、范围(ranges)、三路比较(spaceship)、协程与模块等,覆盖 8 个完整示例代码。
小小龙学IT2 个月前
linux·c++·c++20
C++ std::chrono 时间库深度解析:从 duration 模板到 C++20 日历与时区在 C++11 之前,C++ 程序处理时间几乎只能依赖 C 标准库的 time_t / struct tm 与一堆全局函数(time()、localtime()、strftime()),其痛点非常明显:
郝学胜-神的一滴2 个月前
开发语言·算法·编程·软件构建·c++20
C++20 高级编程 004:从初始化、内存到const系列关键字不少深耕 C++ 的开发者常会陷入一种尴尬:能写业务逻辑,却在底层语法细节栽跟头 —— 指派初始化分不清、栈堆内存乱释放、const指针看得头皮发麻、constexpr与consteval傻傻分不清。
可爱系程序猿2 个月前
程序人生·电脑·c++20
msvcp120.dll 加载失败排查:VC++ 2013、进程架构与插件私有目录如何对应msvcp120.dll 属于 Visual C++ 2013 的 C++ 标准库。加载失败既可能是运行库缺失,也可能是宿主程序与插件架构不一致,或者私有目录里的旧版本抢先被加载。技术排查应先锁定实际进程、模块路径和错误时点,再处理组件,避免只按文件名覆盖。
ShineWinsu2 个月前
c++·c++20
对于C++:C++20中线程、初始化、Lambda与内存视图等特性的解析本文聚焦 C++20 标准库中八组非常有代表性的能力:std::jthread、std::osyncstream、指派初始化器、范围 for 中的初始化语句、Lambda 初始捕获中的包扩展、and/or/not 替代标记、功能特性宏测试以及 std::span。
可爱系程序猿2 个月前
程序人生·电脑·c++20
mfc100.dll 加载失败排查:旧版 VC++ 2010 程序、位数与插件目录如何核对mfc100.dll 多见于使用 Visual C++ 2010 构建的旧程序。64 位 Windows 上运行 32 位旧软件仍需要 x86 运行库,因此只按系统位数安装组件很容易漏掉依赖。排查时应同时确认宿主程序、插件和运行库架构,再使用受支持的安装包修复。
ShineWinsu2 个月前
linux·开发语言·网络·c++·c++20·epoll
对于 C++:C++20中Concept(概念) 与 Coroutine(协程)的解析C++20 是 C++ 语言发展史上一个里程碑式的版本。如果说 C++11 让这门语言焕然一新,那么 C++20 则是一次更加深远的能力扩展。在这个版本中,有两个特性尤为引人注目,它们分别是概念(Concept) 和协程(Coroutine)。
Lzg_na2 个月前
c++20
C++20 Concept 核心概念、语法详解与三大工程实践场景定义:Concept 是一个编译期谓词(返回 bool 的表达式),用于对模板参数施加语义约束。本质:它告诉编译器:这个模板参数 T 必须具备哪些行为(如支持 +、支持迭代、可拷贝等)。
Billy121382 个月前
c++20·c++进阶学习
Day14-C++20 Modules:模块声明与导入、模块分区、与头文件对比、迁移策略C++进阶计划 · Day 14 | 预计学习时长:2.5小时C++20 Modules 是 C++ 历史上自 C++11 以来最重要的语言特性变革。它从根本上重新定义了 C++ 代码的编译模型,解决了困扰 C++ 数十年的翻译单元(Translation Unit)隔离问题。
程序猿编码2 个月前
pytorch·语言模型·大模型·c++20·推荐算法
不用GPU,不用多线程,我用C++20手写了一个Gemma 3推理引擎现在跑大模型,大家的默认思路是:上GPU、开多线程、调各种推理框架。但有时候你只是想在自己的笔记本上快速试个东西,或者你的场景根本不允许用GPU(比如嵌入式设备、边缘计算节点)。这时候,CPU单线程推理就成了唯一选择。
Billy121382 个月前
c++20·c++进阶学习
Day15-C++20 三路比较运算符 `<=>`:一次定义,全面排序C++进阶计划 · Day 15 | 预计学习时长:2小时在 C++20 之前,实现一个完整的可比较类型是一项繁琐的工作。你需要手写 6 个比较运算符(==、!=、<、<=、>、>=),每一个都要保证逻辑一致性。这不仅冗长,还容易出错——比如 < 和 > 的定义不一致,导致排序算法行为异常。
A_cainiao_A2 个月前
开发语言·c++20
C++20:std::stop_source让线程说停就听std::stop_source 是 C++20 引入的标准库组件(位于 <stop_token> 头文件中),用于在多线程编程中实现协同式线程取消(Cooperative Thread Cancellation)。