(更多…)
TL;DR
在类设计含有多重继承的内存布局下,对象的this指针是存在编译器隐含的偏移修正行为
现象如下:
首个base class并不需要修正,因为内存布局与derived class是重叠共用的,无论有无vptr的介入
其它base class由编译器修正this指针,需要付出轻微的运行时成本(多一条加法指令)
如果derived class隐藏了ba
实现一个xyz系列算是本博客的月指活了,这次写的是lockfree容器(硬核程度越来越高,以后咋低成本水文章啊)
声明
不建议自己从零造lockfree轮子,至少需要有paper支撑,或者从已有的项目中改进
否则无法证明代码是正确的
为此本文参考了模板库boost::lockfree的实现以及MS Queue的paper(Simple, Fast, and
声明
本文章是从较为实际的角度去分析C++内存模型,涉及到memory order,modification order和release sequence
虽然内容和概念相比于标准是有所删减的,但我希望这篇文章相比cppreference是更易于理解的
(更多…)
写了一个C++实现的raft,这里就简单做些记录
(更多…)
当你想造一个轮子时,你发现需要为这个轮子再造另一个轮子
(更多…)
(更多…)
不言而喻,一目了然
(更多…)
CRTP:吾与城北virtual孰美?
(更多…)
(更多…)
(更多…)
iterator / container / algorithm / traits,该有的都没有
(更多…)
由于日志库的需求,需要一个编译时排序来处理tag(模板的typename只能append!),所以尝试写了一版,工地C++选手头一回写这么一大串的template元编程
(更多…)
鉴于C++标准库并没有提供侵入式容器供我们使用,这里只简单梳理一下侵入式容器的特性
(更多…)
深入探索g++钦定的西半球最快的排序算法
(更多…)
(更多…)
也许只是没用的技巧,但谁不喜欢折腾代码
(更多…)
轮子所用的定时器方案大概定型了,觉得可以对一下思路,讨论一下逐步扩展的实现
(更多…)
这个是我造轮子时的一些探索,涉及到简单的template、lambda、完美转发、SFINAE、policy等一连串的坑,在这里做一下记录。
(更多…)
最近在写一个库,有一个场景是std::vector存储一些对象,每次都是往后面添加,但是内部的元素可能会随机地失效(且不可恢复),这种场合下需要针对性地优化vector:
(更多…)
支持任意可调用对象,任意参数,任意作用域,跑的还快,go看后一言不发,惊呼C++不可战胜(x
(更多…)
(更多…)