chromium之MessageLoop浅析
对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
引用的头文件一多,一看就很复杂。
方便起见,从message_loop.h的第一个头文件开始,一路分析。
第一个文件
#include "base/histogram.h"
参考分析chromium之histogram.h,直方图是程序输出统计信息的一个功能
下一个文件
#include "base/observer_list.h"
参考分析chromium之observer_list,观察者模式
下一个文件
#include "base/ref_counted.h"
参考分析chromium之ref_counted,引用计数,可以手动控制对象的生命周期
下一个文件
#include "base/scoped_ptr.h"
参考分析chromium之scoped_ptr,局部指针可以用于内存的自动释放,离开作用域后,对象的生命周期也结束
下一个文件
#include "base/task.h"
参考分析chromium之task,任务,要执行的某一个功能
下一个文件
#include "base/message_pump_win.h"
接下来看看message_loop.cc的引用的头文件
#include "base/compiler_specific.h"
下一个文件
#include "base/lazy_instance.h"
下一个文件
#include "base/message_pump_default.h"
下一个文件
#include "base/thread_local.h"