摘要: 距离2020年已经过去很久了,各大编译器对于C++20各项标准的支持也日趋完善,无栈协程也是其中之一,所以我就尝试着拿协程与`io_uring`实现了一下proactor模式,这篇文章用来记录一下我的设计和想法。除此之外,我们能在网络上找到许多优秀的C++20协程的教程以及许多优秀的协程应用(库),但从协程入门到架构出成熟的应用(库)之间还存在着不小的鸿沟,而直接去啃大型工程的源代码绝对不算是一种高效率的学习方式。所以,如果这篇文章能够在这方面提供一定的帮助的话那就再好不过了。 正如上所述,这篇文章是介绍基于C++20协程实现异步IO的,而不是介绍C++20协程的,因此有一定的阅读门槛。在阅读之前,你应当至少熟悉一下C++20协程。 阅读全文
posted @ 2024-03-27 10:50 icysky 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 我们能在各处看到“C++的异常很慢,不要用”这样的言论,不过很少有人告诉你,C++的异常到底有多慢,以及它为什么这么慢。本文会详细介绍C++在抛出以及捕获异常时,代码到底做了什么,以及我们使用C++异常到底付出了多少代价。 阅读全文
posted @ 2024-02-28 17:04 icysky 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 这是CppCon 2019 Herb Sutter的演讲De-fragmenting C++: Making exceptions and RTTI more affordable and usable的一篇笔记。虽然这场演讲的时间很长,但真正讨论的技术细节内容并不多。演讲对于一些常见争议的讨论值得一看,不过我不会在本文中过多地提及。 阅读全文
posted @ 2024-01-06 22:32 icysky 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 这是我阅读General-Purpose Graphics Processor Architecture的一篇笔记,本文对应书中第二章的内容。 阅读全文
posted @ 2023-10-07 11:34 icysky 阅读(261) 评论(0) 推荐(0) 编辑
摘要: DirectX 12、Vulkan等下一代的渲染API在设计上相比OpenGL等上一代API有了很大的不同。下一代渲染API暴露了更多的GPU相关的细节部分,这允许程序员对GPU进行更加细致的控制,但同时也使得API本身变得更加琐碎与难用。这一系列文章用来记录我封装DirectX 12的思路与心得,篇章之间不会有很强的关联性。 阅读全文
posted @ 2023-10-07 11:14 icysky 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 早在C++11就在STL中引入了原子操作支持了。大部分时候,我使用C++11的atomic仅仅是为了原子地操作特定的一个变量,比如`load`、`store`、`fetch_add`等等。然而实际上,C++11的原子操作带着的memory order还能起到memory barrier的作用。本文会从头介绍C++11原子变量的用法,使用的注意事项以及一些原理,原理部分会涉及少量的计算机体系结构的知识,主要与CPU的缓存相关。 阅读全文
posted @ 2023-10-07 11:12 icysky 阅读(2105) 评论(0) 推荐(1) 编辑
摘要: 这是我阅读 Ray Tracing Gem 的一篇笔记,《避免自相交的快速可靠的方法》是 Ray Tracing Gem 的第六章。这篇博客文章主要是为了记录和解释原文末尾给出的魔法一般的代码。 阅读全文
posted @ 2023-10-07 11:10 icysky 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 这个标题是唬人玩儿的,虽然这题。。。名副其实 阅读全文
posted @ 2020-11-22 00:25 icysky 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 委托我是看B站杨旭大佬(B站ID:软件工艺师)的视频学的。不过视频给的例子不多,讲解也比较硬核,所以我编了一些例子来加深理解。 蒟蒻我也是初学,所以如果有错误的地方,还请不吝指正。 阅读全文
posted @ 2020-11-12 19:47 icysky 阅读(191) 评论(0) 推荐(0) 编辑
摘要: [题目链接 POJ 2528](http://poj.org/problem?id=2528) 阅读全文
posted @ 2020-10-05 23:09 icysky 阅读(122) 评论(0) 推荐(0) 编辑