- 博客(14)
- 收藏
- 关注
原创 C++ 原子操作:理论篇
当线程A在执行这个原子RMW时,其他核心(CPU)无法“插入”到这个过程的中间,它们必须等待A彻底完成后,才能读取到那个“已经完成”的新值。CPU 认为 data 的写入(可能导致缓存失效,很慢)和 ready 的写入(可能在另一个缓存行,很快)互不相关,它可能先执行 (2),再执行 (1)。确保一个核心的写入(特别是缓冲区里的写入)能及时“刷” (Flush) 出去,并让其他核心的缓存“失效” (Invalidate),从而对其他核心可见。这个“门”本身成了系统的性能瓶颈,CPU的并行性被白白浪费了。
2025-10-26 21:59:50
755
原创 手写MySQL连接池
维持和管理一定数量连接的池式结构,在使用时直接复用连接而非创建连接。因为创建连接的开销还是比较大的,服务器和MySQL创建连接的过程如下图所示:当一条连接建立之后,长时间不向MySQL发送数据的话,MySQL会将这条连接断开,这要求连接池在管理的时候需要定时发送心跳包,让MySQL知道这条连接是活跃的。所以连接池在管理连接时需要实现这一功能,但本文暂不涉及发送心跳包的内容讲解。
2025-10-25 20:00:00
1419
原创 手写线程池
首先区分一下进程和线程:进程是操作系统进行资源分配的基本单位,线程是操作系统进行 cpu 调度的基本单位。线程池是维持管理一定数量线程的池式结构。维持线程:让线程一直存在复用线程,减少创建销毁线程的开销。管理线程:有任务让休眠的线程唤醒,无任务将线程休眠不参与cpu的调度。一定数量的线程:操作系统通过cpu核心去运行线程的 1:1,核心数是有限的,线程如果不断增加,会带来线程切换的问题,线程数如果越来越多不但不会提升性能还会给操作系统带来负担。
2025-10-24 15:15:00
1007
原创 io_uring
定义与背景:io_uring 是 Linux 内核提供的一种高性能异步 I/O 框架,旨在解决传统异步 I/O 模型的性能瓶颈。
2025-05-21 11:00:58
705
原创 协程组件Ntyco学习笔记
协程是一种用同步编程思维实现异步操作的技术,主要用于提高I/O密集型任务的效率。它通过用户态调度和非抢占式切换,避免了线程切换的开销和回调地狱问题。协程的优点包括极小的切换开销和避免线程竞争,但其缺点是无法充分利用多核资源,适合I/O密集型任务而非CPU密集型任务。协程的实现涉及上下文切换、汇编指令、原语操作(如yield和resume)以及调度器管理。调度器通过epoll管理协程状态,确保高效执行。协程的使用场景包括高并发网络服务和游戏开发等。参考项目如NtyCo展示了协程的具体实现和应用。
2025-05-19 13:00:11
1932
原创 用epoll实现reactor模式
reactor是事件驱动的,其核心是不同的I/O事件对应不同的回调函数。不仅是 epoll,select 和poll,它们都是聚焦于I/O事件管理,实现对应的I/O操作。但是之前在了解 epoll 的时候,了解到 epoll 不也是事件驱动的吗?实际上还是有区别的:epoll 只是负责高效地监听 fd 上的事件,比如告诉应用程序哪些套接字有数据可读、哪些可以写入数据等。但是对于这些具体的事件要执行什么操作,epoll 并不关心。
2025-04-16 16:00:00
1003
原创 select、poll、epoll解析
是最早被引入的 I/O 多路复用机制,select 的工作原理是将 fd 集合 fd_set 从用户空间复制到内核空间,由内核检查 fd 的状态,将有状态变化的 fd 集合返回给用户空间。nfds:它是需要监视的最大 fd 值加 1。为什么要加 1 呢?因为 fd 是从 0 开始编号的,例如最大 fd 是 5,那么实际需要检查的位是从第 0 位到第 5 位,总共 6 个位,所以 nfds 应该是 6(5 + 1)。这一参数用于指定 select 函数检查的 fd 范围。
2025-04-14 18:46:38
676
原创 socket网络编程常用API不完全指南
虽然 struct sockaddr 通用性强,但是它的成员变量在实际使用时不够方便,所以通常会使用特定协议族的地址结构,例如 struct sockaddr_in(用于 IPv4), struct sockaddr_in6(用于 IPv6)和 struct sockaddr_un(用于 Unix 域套接字)。UNIX\Linux中的一切都是文件。不同的计算机系统可能采用不同的字节序来存储多字节数据,常见的字节序有大端字节序(Big - Endian)和小端字节序(Little - Endian)。
2025-04-13 18:58:49
1948
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅