chromium messageloop
来源:互联网 发布:王乐平1368单词淘宝 编辑:程序博客网 时间:2024/06/06 07:50
Android 平台下:
MessageLoop::Run
|MessagePump(this)::Run
|
MessagePumpAndroid(UI线程) MessagePumpLibevent(IO线程) MessagePumpDefault(其他线程)
(自定义task和UI消息) (自定义task和IO消息) (自定义task)
|
|
DoWork
DoDelayedWork
DoIdleWork
1. 自定义task
MessageLoop::PostTask(task)
|
| ---> incoming_queue_.push(task) (自定义task queue)
|
| ---> message_loop_->ScheduleWork() | ---> MessagePumpAndroid::ScheduleWork ---> Java_SystemMessageHandler_setTimer()
| ---> MessagePumpLibevent::ScheduleWork ---> write(wakeup_pipe_in_, &buf, 1)
| ---> MessagePumpDefault::ScheduleWork ---> WaitableEvent.Signal()
2. render进程向browser进程发消息
bool RenderWidget::Send(IPC::Message* msg)
|
RenderThreadImpl::Send(IPC::Message* msg)
|
ChildThread::Send(IPC::Message* msg)
|
SyncChannel::Send(IPC::Message* msg)
|
ChannelProxy::Send(msg)
3. browser进程向render进程发消息
bool RenderWidgetHostImpl::Send(IPC::Message* msg)
|
bool RenderProcessHostImpl::Send(IPC::Message* msg)
|
|
ipc_task_runner()->PostTask(ChannelProxy::Context::OnSendMessage)
|
ChannelProxy::Context::OnSendMessage
|
bool Channel::ChannelImpl::Send(Message* message)
|
| ---> output_queue_.push(message)
|
| ---> Channel::ChannelImpl::ProcessOutgoingMessages() ---> write(pipe_, out_bytes, amt_to_write)
0 0
- chromium messageloop
- Chromium MessageLoop类分析
- chromium中MessageLoop指针的实现
- Chrome MessageLoop类分析
- Chrome MessageLoop类分析
- Chrome MessageLoop类分析
- Chrome MessageLoop类分析
- Chrome MessageLoop类分析
- Chrome MessageLoop类分析
- Chromium
- chromium
- [Chrome源码阅读] MessageLoop类的点点滴滴
- Chromium Chromium Blink
- Chromium 编译
- 安装chromium
- chromium编译
- chromium编译
- Chromium WebView
- 微博和微信的区别之处在哪里?
- grep用法详解:grep与正则表达式
- robotium
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
- DB2: not logged initially & append on
- chromium messageloop
- 串口收发数据1
- OSG:2.创建一个简单的彩色四边形场景
- 06extjs的事件机制
- iOS Foundation框架 利用NSNumber和NSValue将非OC对象类型数据存放到集合
- 设计模式概论
- 经纬财富:保定纸白银与现货白银的区别
- 常用正则表达式
- ibatis和hibernate的区别