ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
socket_pool.h File Reference

线程本地socket缓冲池,带有按桶划分的全局空闲队列。 More...

#include <algorithm>
#include <iostream>
#include <cassert>
#include <cstdint>
#include <cstring>
#include <chrono>
#include <format>
#include <atomic>
#include <vector>
#include <mutex>
#include <array>
#include <bit>
#include <new>

Classes

struct  ngl::bucket_stats
class  ngl::buff_pool< TINITBYTES, TCOUNT >
class  ngl::socket_pool

Enumerations

enum  { enum_socket_pool_count = 12 , enum_socket_pool_init_bytes = 64 }

Detailed Description

线程本地socket缓冲池,带有按桶划分的全局空闲队列。

实现了一个高性能的线程本地内存池,用于socket缓冲区管理。 设计特点:

  • 每个线程拥有一个thread_cache(每个桶的本地池)。
  • 全局空闲队列按桶组织(每个桶一把锁)。
  • malloc: 快速路径从本地池获取(无锁),仅当池耗尽时从空闲队列交换。
  • free: 推送到对应桶的全局空闲队列(细粒度锁)。
  • 裁剪逻辑在交换后运行,基于当前分配比率。
  • 无线程槽位跟踪,无跨线程路由。
    Author
    NingLeixueR
    Date
    2020-2025