1. Thread:最底层,真正的线程,负责跑 pthread。

  2. EventLoopThread:包装类,一个线程 + 一个 loop,让线程里跑 EventLoop。

  3. EventLoopThreadPool管理者,创建一堆 EventLoopThread,形成线程池,对外提供 loop。

1
2
3
4
5
EventLoopThreadPool  (线程池:管理一堆线程)
↓ 包含多个
EventLoopThread (线程+loop:一个线程一个loop)
↓ 包含一个
Thread (最底层:真正的系统线程)

1. Thread 类(真正干活的线程)

  • 作用:创建系统线程
  • 内部跑一个 threadFunc 函数
  • 不关心 loop,只负责执行回调

2. EventLoopThread 类(线程绑定一个 loop)

  • 内部创建一个 Thread
  • 线程启动后,创建一个 EventLoop
  • 让 loop 在这个线程里 loop() 运行
  • 对外接口:startLoop() → 返回创建好的 EventLoop*

3. EventLoopThreadPool 类(线程池)

  • 创建 N 个 EventLoopThread
  • 把每个线程的 EventLoop* 存到 loops_ 数组
  • 对外提供:
    • getNextLoop() 轮询获取 loop
    • getAllLoops() 获取所有 loop
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
主线程

创建 EventLoopThreadPool

线程池创建 N 个 EventLoopThread

每个 EventLoopThread 创建一个 Thread

Thread 启动系统线程

线程里创建 EventLoop 并运行 loop()

把 EventLoop* 返回给线程池

线程池保存所有 EventLoop* → 对外提供服务