51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

C++

谈谈 C++ 中的内存顺序 (Memory Order)

谈谈 C++ 中的内存顺序 (Memory Order)

厉飞雨 阅读(88) 评论(0) 赞(2)

C++11 将多线程纳入了标准. 一旦涉及到多线程, 就需要考虑**并发** , **数据竞争 (date race)** , **线程同步** 等问题, 为此 C++ 提供了互斥锁 `std::mutex`, 原子变量 `std::atomic` 等标准库. 对于原子变量的操作, 有一个很重要的概念就是**内存顺序 (memory order)**, 其中涉及到的概念很多, ...

谈谈 C++ 中的 const

谈谈 C++ 中的 const

厉飞雨 阅读(63) 评论(0) 赞(5)

C++ 用关键字 `const` 标识一个类型不可变. 这其实很容易理解. 不过, 对于 C++ 而言, 简单的概念也有很多可以讨论的. 我们来看一个问题. ### 问题 {#问题} 我们知道 `const` 可以用于修饰成员函数, 标识这个函数不能修改这个类的数据. 假设一个类有一个指针类型的成员 `T *p`, 我们希望通过 `get()` 方法获取 `p` 所指向的对...

C++17 折叠表达式(Fold Expressions)

C++17 折叠表达式(Fold Expressions)

厉飞雨 阅读(95) 评论(0) 赞(2)

在 C++17 中,折叠表达式是一种在**可变参数模板** 中**展开参数包** 并对其**进行某种操作**的方式。它允许你对多个参数进行某种操作(加法、乘法、逻辑运算等),从而大大减少了模板编程的复杂度。 在没有折叠表达式的情况下,处理可变参数模板时,往往需要**递归的方式**来处理每一个参数。而折叠表达式提供了一种更加简洁且高效的写法,减少了代码的冗余。 本文将详细讲解...

C++ std::invoke 工具使用

C++ std::invoke 工具使用

厉飞雨 阅读(61) 评论(0) 赞(3)

`std::invoke` 是 C++17 引入的一个标准库函数,用于**调用可调用对象**,它一般用于模板中,能够以一致的方式处理不同类型的可调用对象。 <br /> * **`_Functor`**: 普通函数对象或 lambda。 * **`_Pmf_object`**: 通过对象调用成员函数 * **`_Pmf_pointer`**:通过对象指针调用成员...

co-uring-http: 基于 C++ 无栈协程与 io_uring 的高性能 HTTP 服务器

co-uring-http: 基于 C++ 无栈协程与 io_uring 的高性能 HTTP 服务器

厉飞雨 阅读(98) 评论(0) 赞(4)

### 前言 GitHub: xiaoyang-sde/co-uring-http 前段时间我在实现 rust-kernel-riscv (使用 Rust 无栈协程进行上下文切换的操作系统内核) 时, 跟进了一些 Linux Kernel 的特性, 其中印象最深的就是 io_uring. io_uring 作为最新的高性能异步 I/O 框架, 支持普通文件与网络套接字的异步...

C++黑客编程揭秘与防范 高清 PDF

C++黑客编程揭秘与防范 高清 PDF

厉飞雨 阅读(69) 评论(0) 赞(4)

C++黑客编程揭秘与防范 高清 PDF\[caption id="attachment_510" align="aligncenter" width="322"\] ![C++黑客编程揭秘与防范 高清 PDF](data:image/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8...

达内2014C++教程【13.9G】

达内2014C++教程【13.9G】

厉飞雨 阅读(66) 评论(0) 赞(2)

教程名称: ----- 达内2014C++教程【17.9G】 教程介绍: ----- 1:C++(14课)、2:C编程(23课)、3:数据结构和算法(6课)、4:unix环境高级编程(22课)、5:STL模板(7课)、6:dcom(8课)、7:MFC(27课)、8:配套课件\\配套资料 播放截图: ----- ![达内2014C++教程【13.9G】_https://...

一个更好的C++序列化/反序列化库Kapok

一个更好的C++序列化/反序列化库Kapok

厉飞雨 阅读(79) 评论(0) 赞(5)

<br /> 1.Kapok的特点 简单,易用,header-only,只需要引用Kapok.hpp即可;高效,初步测试性和messagepack相当。 它是纯c++11实现,因此需要支持C++11的编译器。 2.主要功能 对对象进行自动化的序列化和反序列化,用起来非常简单,先来看个序列化/反序列化一个tuple的例子吧。 <br /> `...