webrtc 的线程模型

        webrtc 的PC Factory 拥有3个线程:

         1)signaling_thread_  :所有PC Factory 和PC 的对外接口,都会切换到signaling_thread_  执行,而PC Observer 所有的回调函数也都在signaling_thread_   执行。

        2) network_thread_:和网络有关的操作都在 network_thread_执行,比如收发数据包、绑定网络端口等。

        3) worker_thread_:和网络无关的可能耗时的操作,都在worker_thread_执行。

1 三大线程的使用

        1)对外接口线程切换

        对PC 接口的调用总是进入到api/peer_connection_proxy.h中,

         这就是对外接口的线程切换代码。因为切换线程最终都是向目标线程提交一个任务,但这个过程需要做参数传递,如果要做到阻塞式的线程切换--函数调用得等到提交到目标线程的任务执行完才能返回,一个典型的场景就是要拿到异步任务的返回值。

        

        2)内部代码的线程切换

        3)三大线程的创建

      头文件在 src\api\Create_peerconnection_factory.h:
        ​​​​​​

         实现在:

        没有创建三大线程,因此由PC Factory 的构造函数创建,启动network_thread_ 和worker_thread_,并把调用webrtc::CreatePeerConnectionFactory  的线程包装为signaling_thread_。在windows 中,这个线程要么是在主线程(发起端),要么是在websocket线程(应答端)。

猜你喜欢

转载自blog.csdn.net/abc1231987/article/details/121052524