#730·muduo

EventLoopThread::startLoop() 中为什么需要创建局部变量 loop?是否可以返回 loop_?

作者: lamb007创建于 2025年10月31日更新于 2026年3月17日

EventLoop* EventLoopThread::startLoop() { assert(!thread_.started()); thread_.start();

EventLoop* loop = nullptr; { MutexLockGuard lock(mutex_); while (loop_ == nullptr) { cv_.wait(lock, this { return loop_ != nullptr; }); } loop = loop_; }

return loop; }

void EventLoopThread::threadFunc() { EventLoop loop;

if (callback_) { callback_(&loop); }

{ MutexLockGuard lock(mutex_); loop_ = &loop; cv_.notify(); }

loop.loop(); //assert(exiting_); MutexLockGuard lock(mutex_); loop_ = nullptr; }