WebRTC的线程事故处置惩罚
1. 差别平台下处置惩罚事故的API:[*]Linux体系下,处置惩罚事故的API是epoll或者select;
[*]Windows体系下,处置惩罚事故的API是WSAEventSelect,完全端口;
[*]Mac体系下,kqueue
2. WebRTC下的事故处置惩罚类:
[*]NullSocketServer(处置惩罚无socket的事故)(工作线程)
[*]PhysicalSocketServer(处置惩罚有socket事故)(网络线程)
事故如何协调线程工作:
信令线程—>触发事故—>公共对象(NullSocketServer或PhysicalSocketServer)(唤醒睡眠线程)—>期待事故(睡眠状态)—>工作线程/网络线程
https://i-blog.csdnimg.cn/direct/a4504e65f405429e9af67d913cbeec24.png
webrtc下事故的发生:
https://i-blog.csdnimg.cn/direct/01db5f9940264ed69a42d2611a18c46a.png
期待线程处置惩罚逻辑:
https://i-blog.csdnimg.cn/direct/8ae82a1d64de459682fca7b6a35542aa.png
while(true)
{
…
Get(&msg, …); // 如果没有时间,在Get()函数中睡眠等待事件
…
Dispatch(&msg);
…
}
Get函数:
假如队列不为空,则取失事故后调用Dispatch处置惩罚;假如队列为空,则调用Wait期待事故发生
https://i-blog.csdnimg.cn/direct/0fb2e2b9984b4777ac42fde57c59872a.png
Wait函数:
https://i-blog.csdnimg.cn/direct/a53d51decc2449448c458ef08e9a66ce.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]