Call分析(二)之ProcessThread和Module

来源:互联网 发布:.com域名怎么续费 编辑:程序博客网 时间:2024/06/06 03:50

我们看下Call里面的两个成员module_process_thread_和
pacer_thread_,从名字可看出他们是跟线程运行有关的,具体看下他们的类图:
这里写图片描述

实际上,当我们要运行一个任务时,会将它打包成一个Module, 然后放到一个新的线程里面去运行,我们先来看下ProcessThread的Start()函数里面执行了什么:
这里写图片描述

由图可见,调用Start()后会创建一个新线程,在线程中循环遍历module,执行module的process(), 遍历queue, 执行task的run(), 然后调用wake_up->Wait()进入休眠,等待下一次唤醒。

我们再来看一下ProcessThread的RegisterModule函数:

void ProcessThreadImpl::RegisterModule(Module* module) {  modules_.push_back(ModuleCallback(module));  wake_up_->Set();}

我们可以看到他只是将module插入modules队列,然后唤醒线程。

原创粉丝点击