探究 Asio 底层实现原理与 C++20 协程改造
引言 Asio 是 C++ 网络编程的事实标准,但多数开发者将其视为“黑盒” —— 我们提交异步操作,等待回调触发,却很少关心事件如何从内核抵达用户态,调度器如何分发任务,以及跨平台抽象层究竟隐藏了哪些细节 ...
REPT:反向调试在已部署软件中缺陷的应用
标题:REPT: Reverse Debugging of Failures in Deployed Software 作者:Weidong Cui, Xinyang Ge, Baris Kasikci, Ben Niu, Upamanyu Sharma, Ruoyu Wang, Insu Yun 发表会议:USENIX OSDI 2018 原文链接:REPT Reverse Debugging of Failures in Deployed Software Intro 众所周知,执行日志有助于调试,但当大多数日志或跟踪在正常运行时都会被丢弃时,没有人愿意为始终在线的日志记录/跟踪支付高性能开销。 ...
浅谈 Python 的对象实现(PyObject)
PyObject Everything is object, except keywords 所有的都是对象,除了关键字 Include/object.h /* PyObject_HEAD 是所有 OBJECT 的初始化段 */ #define PyObject_HEAD PyObject ob_base; typedef struct _object PyObject; struct _object { Py_ssize_t ob_refcnt; PyTypeObject *ob_type; }; /* Py_GIL_DISABLED (无 GIL 锁的版本),添加了额外的 mutex */ struct _object { uintptr_t ob_tid; uint16_t _padding; struct _PyMutex ob_mutex; // per-object lock uint8_t ob_gc_bits; // gc-related state uint32_t ob_ref_local; // local reference count Py_ssize_t ob_ref_shared; // shared (atomic) reference count PyTypeObject *ob_type; }; ...