channel socket acceptor设计
Channel channel等于是一个fd需要多路复用情况下的封装,比如epoll在做多路服用的时候,需要epoll_ctl注册fd还有fd上感兴趣的事件,当事件发生的时候需要做相应的处理,这里channel实际上是封装了针对fd的事件处理,还有事件发生时的回调函数。 比如看下eventloop里wakeupfd那个channel的流程 wakeupFd_(createEventfd...
Channel channel等于是一个fd需要多路复用情况下的封装,比如epoll在做多路服用的时候,需要epoll_ctl注册fd还有fd上感兴趣的事件,当事件发生的时候需要做相应的处理,这里channel实际上是封装了针对fd的事件处理,还有事件发生时的回调函数。 比如看下eventloop里wakeupfd那个channel的流程 wakeupFd_(createEventfd...
主要看下流式传输中的buffer设计,怎么做到高效的读写 这里以muduo的buffer类设计为例子 /// @code /// +-------------------+------------------+------------------+ /// | prependable bytes | readable bytes | writable bytes | /// | ...
比较复杂的回调里经常出现析构父对象之后还在继续使用父对象的行为 这种就属于悬垂引用问题,针对这种问题开asan都能快速崩掉 这种问题可能导致问题出现乱蹦的堆栈,或者你开了asan之后,一直崩在malloc里,这个时候要做的其实就是缩小调查的范围 如果堆栈直接能看出问题,那当然最好了,崩的点就直接是问题的点 如果堆栈不清晰,就要配合复现的日志,最好是多个,对比定位到相似的日志,...
其实很不想写这个,尤其是大多数的宏都要写在header里,但是宏有时候真的能少些很多代码。。。 这种预编译生效的文本替换,属实是有点ugly了 enum to string #include <stdio.h> #include <string.h> #define NUMARGS(...) (sizeof((int[]){__VA_ARGS__}) / si...
DNS 问题分析示例(2019) dns问题分析 TTY的前世今生 TTY的前世今生 NAT地址转换 NAT地址转换 简明汇编教程 简明汇编教程 Unicode in C++ Unicode in C++ qemu调试kernel 手把手教你利用VS Code+Qemu+GDB调试Linux内核 Debugging ke...
std::exchange是c++14提供的一个函数模板,在<utility>里 template<class T, class U = T> constexpr // since C++20 T exchange(T& obj, U&& new_value) noexcept( // since C++23 std:...
think asio asio C++ library 一起来学asio的异步模型 出海第一步 收录独立开发者出海技术栈和工具 sender/receiver Eric Niebler - Working with Asynchrony Generally and AMA at CppEurope 2022 另外知乎还有个介绍的文章 浅谈c++虚表设计...
Ping 是一个常用的网络诊断工具,其工作原理基于 ICMP(Internet Control Message Protocol,互联网控制消息协议) 发送 ICMP Echo Request: ping 命令会向目标主机发送 ICMP Echo Request(类型 8)数据包。 这个数据包包含一个标识符、序列号和可选的数据负载。 ...
llvm-tutor llvm-tutor shecc shecc A self-hosting and educational C optimizing compiler My First Language Frontend with LLVM Tutorial My First Language Frontend with LLVM Tutorial
BJ写了3个, c++的标准库确实好用 Five Popular Myths about C++, Part 1 Five Popular Myths about C++, Part 2 Five Popular Myths about C++, Part 3 开启卓越模式,避免异构cpu的性能调度问题 卓越中心 (CoE) 概述 13带cpu异构,开启卓越模...