c++20

SunkingYang7 天前
c++·c++20·特性·版本·新特性·对比·c++17
C++20 vs C++17:新特性对比与用法指南C++20 是继 C++11 之后最大的一次升级,核心是四大支柱:Concepts、Ranges、Coroutines、Modules。下面继续用「C++17 怎么写 → C++20 怎么写」的对比方式,把每个特性的用法、收益和坑都讲清楚。
前进吧-程序员7 天前
网络·c++·c++20
C++20 协程入门实战:从 co_await 到一个 100 行的异步任务调度器上一篇写了 io_uring(io_uring 入门:从 epoll 的 readiness 到 completion),有读者问:C++20 协程和 io_uring 怎么配合?这篇先把协程本身讲透——co_await 背后到底发生了什么,再手写一个 100 行左右的最小异步任务调度器,最后给出和 io_uring 对接的思路。
前进吧-程序员7 天前
网络·c++·c++20
实战:C++20 协程 + io_uring 写一个 400 行的 echo server上一篇《C++20 协程入门实战》结尾挖了个坑:把 Task + 调度器 + io_uring 封装成一个 echo server,对比 epoll + 回调版本。这篇来填坑。读完你会拿到:一个完整可编译的协程版 echo server,以及它和回调版的代码量 / 性能对比。
骑着蜗牛撵大象3278 天前
android·c++20·协程·并发编程·co_await·屏障同步
C++20 协程 × 屏障:手写一个 co_await 版 Barrier,让等待不再钉死线程C++20 把 co_await 带进了标准库,但很多人对协程的期待还停在「替代回调」上。其实它真正的价值之一,是重写那些「等待型」并发原语——最典型的就是屏障(barrier)。
闻缺陷则喜何志丹9 天前
c++·算法·c++20·携程·屏障
【c++20】协程与屏障std::barrier 的回调函数先于所有线程从 arrive_and_wait() 返回执行。回调执行完毕后,屏障重置,各线程才继续往下走。这个顺序是标准保证的。回调函数在某个arrive_and_wait所在的线程执行。 以下程序分五步: 一,各线程读取分数。 二,回调函数执行 计算排名。 三, 各线程输入志愿。 四,根据分数和志愿匹配学校。 五,查看录取结果。
努力努力再努力wz10 天前
开发语言·c++·c++20·1024程序员节
【C++高阶系列】C++20 协程底层原理:函数为什么能暂停?从状态机到 Task,彻底串起挂起、恢复与协程调度🔥 本文专栏:C++高阶 🌸作者主页:努力努力再努力wz💪 今日博客励志语录:你不需要证明自己注定成功,你只需要证明今天的自己没有停下。
fpcc21 天前
c++·c++20
c++20新功能—std::osyncstream在学习多线程编程时,如果使用std::cout进行输出的话,往往发现可能打印的数据会串了行,甚至会出现这个线程的输出结果和另外一个线程的输出结果混在一起了。特别是在实际的应用中,一些多线程中的日志往往更容易出现这种现象,导致开发者得去拆这些日志。 这种现象的原因在操作符“<<”在多线程环境下是安全的(或者说原子的)但往往一个std::cout后面会跟多个“<<”,而这个标准就不保障是原子的了。而线程调用器往往又是随机的,所以就会出现上面的那些情况。
啦啦啦啦啦zzzz1 个月前
服务器·算法·哈希算法·c++20·分布式存储
一致性哈希本篇文章基于分布式存储的背景,一致性哈希是分布式存储里面的一种技术,用于多个结点之间分布数据,以最大程度减少添加或删除结点时候的数据重组
keep intensify1 个月前
c++·算法·c++20
C++20线程池本实现基于 C++20 标准,摒弃了传统的常规标志位与易错组件。以下是核心代码段的设计动机与原理:为什么使用 std::jthread 而不是 std::thread? std::jthread 提供了自动汇合和协作式中断机制。它的析构函数会自动发出停止请求并阻塞等待线程结束,彻底消除了传统 std::thread 忘记调用 join() 导致程序崩溃的隐患,并且代码更简洁,安全性更高。
繁华的地方不一定留下你的脚印1 个月前
c++20
C++20 concepts:把模板要求写在入口,而不是等一屏报错模板函数若只能接收特定类型,最好直接表达这个要求。concepts 让约束成为接口的一部分,调用错误通常也能更早定位到“不满足什么条件”。
码匠许师傅1 个月前
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
啦啦啦啦啦zzzz2 个月前
linux·服务器·c++·网络编程·c++20
利用RAII机制进行日志的采集对于日志器的组装我们已经完成了一大半了,接下来就是一些比较细节的实现。我们先回顾一下子之前的组成部分,首先是我们自定义了一个buffer,这个buffer是存储我们输出的日志的,由inline和overflow组成,当日志的内容比较小的时候,我们会把日志输出到inline里面,这个inline在栈上,也就是array<char, 128>,而当日志比较多的时候,我们才在堆上开辟内存,vector。
啦啦啦啦啦zzzz2 个月前
c++·算法·c++20
Logger的组装(c++20)本篇文章将综合前几篇文章,appender,format,buffer,组装我们的一个Logger,其作用是可以输出日志到特定的地方。这也是我们日志器的核心部分。
啦啦啦啦啦zzzz2 个月前
linux·服务器·c++·c++20
Appender抽象类的实现c++20本篇文章还是对于日志器的实现,我们的日志输出会输出到不同的地方,有时候是终端,有时候是网络,有时候是文件里面,所以我们需要规定其输出的地方,这也就是appender的作用。
OPEN-F2 个月前
算法·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 运行库,因此只按系统位数安装组件很容易漏掉依赖。排查时应同时确认宿主程序、插件和运行库架构,再使用受支持的安装包修复。