问题:Muduo 的 4 个 IO 线程负责所有 onMessage 回调。如果在 IO 线程里直接执行 MySQL 查询(可能耗时 50-200ms),会阻塞事件循环,其他连接的 TCP 事件无法处理。
第 15 步:同步队列
文件:include/server/threadpool/syncQueue_2.hpp

双条件变量是关键------notEmpty 和 notFull 分别让生产者和消费者精确等待,避免虚假唤醒。
第 16 步:FixedThreadPool
文件:include/server/threadpool/FixedThreadPool.hpp

packaged_task + future 是关键------业务代码可以通过 future.get() 同步等待任务执行结果。
第 17 步:dispatch() 统一调度
在 ChatService 中添加 dispatch 模板和 setThreadPool:

runInLoop 的作用:Muduo 要求只能在 IO 线程中操作 TcpConnection。业务线程完成后必须把 send 操作"投递"回 IO 线程执行。
第 18 步:main.cpp 支持 --no-pool

