- 博客(5)
- 收藏
- 关注
原创 原子性、原子操作与内存序
原子操作是对于原子变量的操作。多线程环境下,确保对共享变量的操作在执行时不会被干扰,从而避免竞态条件。换句话说就是同时只允许一个线程改变这个变量。一个操作会有多条指令,别的核心不会看到执行的中间状态。
2025-12-17 15:39:33
504
原创 池式组件——线程池、内存池、连接池
头插法的插入的时间复杂度是O(1),尾插法的插入的时间复杂度是O(n),如果维护一个尾指针插入的时间复杂度是O(1)。头插法更容易导致内存碎片,假设一个内存块大小为100kb,目前链表中只有一个节点A,已经占用了90kb,这时要分配一个30kb的内存,需要重新添加一个节点B,如果是头插法,节点B会在节点A之前,之后分配小内存时会先从节点B开始分配,于是节点A中会产生10kb的内存碎片。如果是尾插法,会尽可能从早创建的内存块中分配内存,如果要提高速度,可以创建一个指针指向最早且还有空间的内存块。
2025-12-17 13:02:45
871
原创 Posix API和TCP连接
domain为协议域,决定了socket的地址类型。常见的协议域有AF_INET(IPv4)、AF_INET6(IPv6)。type为socket类型,常见的socket类型有SOCK_STREAM(流式套接字,TCP用)、SOCK_DGRAM(数据报式套接字,UDP用)。protocol指定类型,常用协议有IPPROTO_TCP、PPTOTO_UDP,为0时可以自动选择协议类型。
2025-12-14 17:01:05
216
原创 I/O多路复用和reactor
在Linux中,所有设备都被抽象为文件,通过文件描述符进行访问。I/O多路复用是指通过一个线程同时监视多个文件描述符,当其中任意一个文件描述符就绪(可读、可写或发生异常)时,程序可以进行相应的操作。reactor是一种基于事件驱动的模式,对于不同的事件,使用不同的回调函数响应。以epoll为例,事先设计三种回调函数accept_cb、receive_cb和send_cb。当事件为EPOLLIN时,如果fd为sockfd调用accept_cb;如果fd为clientfd,调用receive_cb。
2025-12-13 16:32:55
638
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅