WebRTC源代码探索之旅——多线程篇(5 - 3)

本文探讨了WebRTC源代码中涉及的Linux多线程和信号处理,重点分析了talk_base::PosixSignalHandler和talk_base::PosixSignalDispatcher。文章指出,尽管Signal机制在Linux中使用较少,但理解其工作原理对Windows开发者至关重要。PosixSignalHandler作为全局唯一对象,使用pipe和非阻塞文件描述符进行信号分发,而PosixSignalDispatcher则负责信号的响应处理。
摘要由CSDN通过智能技术生成

5.4 talk_base::PosixSignalHandler

 

talk_base::PosixSignalHandler和talk_base::PosixSignalDispatcher这两个类只有Linux版本。并且在整个WebRTC的源代码中没有任何地方使用过这两个类。因此,对它们的代码分析主要是为了帮助Windows开发人员从实用的角度学习如何使用Linux平台下的部件。

 

talk_base::PosixSignalHandler类主要实现了将Linux的Signal机制纳入到多路分离器的架构中去。对于Windows开发人员来说,Signal机制是一个比较陌生的东西。而且对它的处理比较麻烦。因为Signal会在程序运行的任何时候出现,一旦触发就会调用注册的处理函数,开发人员没法假定这时程序中哪些工具是否可用。正如在talk_base::PosixSignalHandler::OnPosixSignalReceived函数的注释中所说的在出错的时候我们甚至无法记录log:

 

     // Nothing we can do here. If there's an error somehow then there's
     // nothing we can safely do from a signal handler.
     // No, we can't even safely log it.


 

此外,Linux的有些signal相关的函数在不同版本的Linux/Unix平台以及的表现完全不同。因为,signal机制是一个古老的历史遗留问题,在当年Unix主导一切,各个大公司又各自为战的年代,要提供一个公认完备的标准确实不易。幸运的是从WebRTC的代码来看,几乎没有什么组件使用了s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值