反汇编调研this offset和vtable thunk

TL;DR 在类设计含有多重继承的内存布局下,对象的this指针是存在编译器隐含的偏移修正行为 现象如下: 首个base class并不需要修正,因为内存布局与derived class是重叠共用的,无论有无vptr的介入 其它base class由编译器修正this指针,需要付出轻微的运行时成本(多一条加法指令) 如果derived class隐藏了ba

实现lockfree容器:freelist,stack和queue

实现一个xyz系列算是本博客的月指活了,这次写的是lockfree容器(硬核程度越来越高,以后咋低成本水文章啊) 声明 不建议自己从零造lockfree轮子,至少需要有paper支撑,或者从已有的项目中改进 否则无法证明代码是正确的 为此本文参考了模板库boost::lockfree的实现以及MS Queue的paper(Simple, Fast, and

浅谈C++内存模型

声明 本文章是从较为实际的角度去分析C++内存模型,涉及到memory order,modification order和release sequence 虽然内容和概念相比于标准是有所删减的,但我希望这篇文章相比cppreference是更易于理解的 (更多…)

从deadline调度看elevator

前言 Linux内核中的elevator layer就是IO调度层 之所以把IO视为电梯,是因为它的物理特性和生活上的电梯差不多: 消费者(电梯)远跟不上生产者(乘客等待上下楼)的速度 寻址方式说是随机访问(到哪都行),但其实条件苛刻(反方向哪怕只差一个楼层,也可能等半天) (更多…)

modern microprocessors简单介绍[一]

这篇文章是90-Minute Guide!的简单阅读笔记 原文是一篇极佳的、点到为止的概述性文章,我推荐直接阅读 而不是看我这种比机翻还差劲,比原文更短但是对读者没有任何帮助的文章 但是,如果你希望有一个10-Minute Guide,可以考虑往下看看 (更多…)

epoll in depth

由于要做年轻人的第一次技术分享,因此我挑了个epoll实现原理作为课题,主要是先做下快速介绍,然后直接杠源码(长篇大论没人听警告) (更多…)

Head First设计模式学习笔记

本篇是head first设计模式的读书笔记,关键的定义我会摘录书里的原话(一般比较简短),自己思考的部分不一定很正确,有错误请指出(又没人看唉) (更多…)