对chromium的MessageLoop非常感兴趣,接下来会详细分析Windows平台的具体实现。
代码版本:chromium-4.0.210.0_p26329
先看一下依赖的文件
message_loop.cc
#include "base/message_loop.h" #include <algorithm> #include "base/compiler_specific.h" #include "base/lazy_instance.h" #include "base/logging.h" #include "base/message_pump_default.h" #include "base/string_util.h" #include "base/thread_local.h"
message_loop.h
#include <queue> #include <string> #include "base/histogram.h" #include "base/message_pump.h" #include "base/observer_list.h" #include "base/ref_counted.h" #include "base/scoped_ptr.h" #include "base/task.h" #if defined(OS_WIN) // We need this to declare base::MessagePumpWin::Dispatcher, which we should // really just eliminate. #include "base/message_pump_win.h" #elif defined(OS_POSIX) #include "base/message_pump_libevent.h" #endif #if defined(OS_LINUX) #include "base/message_pump_glib.h" #endif
引用的头文件一多,一看就很复杂。
方便起见,从给第一个头文件开始,一路分析。
第一个文件
#include "base/histogram.h"