![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 93
RzBu11d023r
这个作者很懒,什么都没留下…
展开
-
More C++ Idioms C++ 惯常用法总结
内容来源: 正在上传…重新上传取消 More C++ Idioms - Wikibooks, open books for an open world 总结Acyclic visitor 没搞明白 address of 是为了解决重载 operator & 的问题。 Attach by initializaiton,对于 event-loop 的程序以及接管 main 的程序(通常是 GUI 或者像 gtest 这种),有一些 main 之前的逻辑 ...原创 2022-05-26 23:50:43 · 950 阅读 · 0 评论 -
基于协程io_uring 异步网络库系列 V: executor 和线程池 thread pool
这是一个系列文章,目录:cppcoro 源码级使用教程系列: 概述 | C++20 coroutine 教程 | io_uring 异步IO 网络框架 系列笔记_我说我谁呢 --CSDN博客很遗憾的是,虽然本身学习服务器应该把 socket 编程、缓存处理、linux 系统调用信号机制等这些为重点,但是对于要用 coroutine 来做的话,其实是优点舍近求远的,因为你必须理解异步和 coroutine 本质上的状态机,所以这里的非关键因素的篇幅和绕程度可能会大一些。我属实没搞明白他们是怎么学这部分的内..原创 2022-03-06 16:25:00 · 1084 阅读 · 0 评论 -
C++20 Thread Cancellation | jthread | std::stop_token | jthread 和 stop_token | CAS| 内存屏障|std::atomic
熟悉一下 C++20 引入的 stop_xxx 即 <stop_token> 头文件提供的 Thread cancellation 的支持。熟悉多线程编程了,一般 demux 程序(比如基于 epoll/select/poll 的大部分时间的“死”循环)就是一个状态机。过程中我们如果希望调控他的话,就要使用变量(作为状态机的输入),达到一个检查状态的时候,程序(一般是我们写的死循环)就会响应我们的输入,给出输出。或者说是一种信号机制吧,Nginx 的信号控制进程的停止、reload...原创 2022-03-04 13:39:45 · 1573 阅读 · 0 评论 -
基于协程io_uring 异步网络库系列 IV: Proactor 与 asynchronous operation | C++20 coroutine | io_uring 异步IO 网络框架
本系列通过结合 linux 的 io_uring 和 cppcoro (源码需要进行部分修改以适配 linux 下的 g++-11)在网络中的使用学习 C++20 coroutine。值得注意的是,cppcoro 目前已经暂停维护,仍然为 TS 版本的支持,同时其真异步底层支持只支持了 win32 的 IOCP(本身 cppcoro 兼容 MSVC),但是本系列不想涉及 IOCP 和 windows 的部分因为除了跨平台外,没有太大意义(如果采用 windows 的话,C# 是足够好的语言,但是目前...原创 2022-03-04 05:54:55 · 520 阅读 · 0 评论 -
基于协程io_uring 异步网络库系列 III: Proactor、异步与协程 | C++20 coroutine 教程 | io_uring 异步IO 网络框架 系列笔记
本系列通过结合 linux 的 io_uring 和 cppcoro (源码需要进行部分修改以适配 linux 下的 g++-11)在网络中的使用学习 C++20 coroutine。值得注意的是,cppcoro 目前已经暂停维护,仍然为 TS 版本的支持,同时其真异步底层支持只支持了 win32 的 IOCP(本身 cppcoro 兼容 MSVC),但是本系列不想涉及 IOCP 和 windows 的部分因为除了跨平台外,没有太大意义(如果采用 windows 的话,C# 是足够好的语言,但是目前广泛的.原创 2022-03-04 05:52:17 · 785 阅读 · 0 评论 -
基于协程io_uring 异步网络库系列 II: 协程基本组件概要 | C++20 coroutine 教程 | io_uring 异步IO 网络框架 系列笔记
本系列通过结合 linux 的 io_uring 和 cppcoro (源码需要进行部分修改以适配 linux 下的 g++-11)在网络中的使用学习 C++20 coroutine。值得注意的是,cppcoro 目前已经暂停维护,仍然为 TS 版本的支持,同时其真异步底层支持只支持了 win32 的 IOCP(本身 cppcoro 兼容 MSVC),但是本系列不想涉及 IOCP 和 windows 的部分因为除了跨平台外,没有太大意义(如果采用 windows 的话,C# 是足够好的语言,但是目前广...原创 2022-03-04 05:47:30 · 863 阅读 · 0 评论 -
基于协程io_uring 异步网络库系列 I: 异步和协程复习 | C++20 coroutine 教程 | io_uring 异步IO 网络框架 系列笔记
首先复习协程的部分先(对照 C++20 coroutine 探索 系列笔记, 建议对着第二篇的查阅备用来复习)。这可能是因为编写 awaiter 是如何的是很重要的(如果要支持用 co_await 写程序的话),所以还是要搞明白协程和 cppcoro 提供的协程包装(是C#早有的成熟系列)的执行过程。其实下面我会一直强化这个协程状态机的运行走向,就当作是复习巩固记忆了。一个协程的返回值 task 是一个 R 类型兼 Awaiter 类型,他的 promise_type 的 initial_susp...原创 2022-03-04 05:44:12 · 749 阅读 · 0 评论 -
C++ 20 std::chrono 库使用 | std::chrono::year_month_day |std::chrono::hh_mm_ss 使用
mark 一下 C++20 怎么获取日期和时间(cppreference 对 year_month_day 的没有例子,我一开始没搞清楚原创 2021-11-29 20:19:32 · 2478 阅读 · 0 评论 -
C++20 coroutine 探索III: 异步编程,Task<T> 编写,boost asio 协程分析,C# async / await, cppcoro 源码分析
经过了前面对 coroutine 的反复学习,现在尝试写一些封装好的协程工具(reinventing the wheel)。本文先从最Promise 异步编程模型的最基本的 Task<T> 入手.异步编程Futures and promises - Wikipedia异步的关键点是真正的无线程异步必须要 all the way down 到 O/S system call 层面甚至到硬件层面的异步支持才能实现 (对于 Linux 的驱动模型, 做 top half 工作的 softirq原创 2021-11-23 21:37:51 · 2638 阅读 · 6 评论 -
C++20 coroutine 探索II: coroutine_traits & await_transform 的用法,boost asio 中 coroutine 的用法
经过之前对 coroutine 的思路整理(额,实际并完成完整的一篇),我基本明白了一个事实(这个文章比我潦草本地笔记整理得好所以复习概念就看他了:C++20 协程初探 | Netcan on Programming, 不过主要的调用流程伪代码(约等于编译器生成代码)参考还是 co_await 流程 和 协程调用流程,然后实际的细节指定就是看 cppreference Coroutines (C++20) - cppreference.com就行了)。基本概念Promise Type 实际是...原创 2021-11-22 13:43:45 · 2221 阅读 · 0 评论 -
C++20 coroutine 探索I:co_await 原理 | 使用 C++ 协程写 python generator
时隔三个月,才回到当时说的学协程的坑,中间学了各种各样的东西,起码对现代C++ 有些许了解了。尾递归优化 快速排序优化 CPS 变换 call/cc setjmp/longjmp coroutine 协程 栈编程和控制流 讲解_我说我谁呢 --CSDN博客看这个文章之前可以先复习一下函数式编程里面的 call/cc 的概念,因为 C++20 的 stackless coroutine 就是用类似 call/cc 的手法实现的。主要参考资料参照Coroutines (C++20) - cppref..原创 2021-11-20 16:52:20 · 4015 阅读 · 0 评论 -
C++ 标准库 mutex, condition variable, lock 辨析及读写锁编写 互斥锁条件变量锁辨析互斥锁条件变量区别
看C++ 的时候发现我操作系统白读了,竟然忽然看不懂 C++ 的 RWlock。这里记录一下。。。。内核的自旋锁和睡眠锁先复习这个:从自旋锁、睡眠锁、读写锁到 Linux RCU 机制讲解 - RzBu11023R - 博客园 (cnblogs.com)gmutex condition_variable lock概念先区分一下 lock,mutex,ca 的概念,特别是 lock 是作为 mutex 的 RAII 实现这一点是 C++ 学习目的。C++ 文档看这几个:..原创 2021-09-22 18:43:33 · 651 阅读 · 0 评论