webrtc PeerConnection的线程使用问题

webrtc在媒体发布,媒体订阅时,会用到PeerConnection;今天在代码开发过程中,代码peer_connection_factory->CreatePeerConnection在第二次调用中阻塞住,第一次调用没有阻塞,经过本人分析。
第一次调用时,会通过CreatePeerConnectionFactory创建PeerConnectionFactory,然后接着调用CreatePeerConnection创建PeerConnection,CreatePeerConnectionFactory和CreatePeerConnection在同一线程内执行。
第二次调用时,由于PeerConnectionFactory已经创建,故调用的是CreatePeerConnection,而这次调用的线程跟第一次调用的线程不是同一线程。

本人分析,主要是第二次CreatePeerConnection时,线程不是PeerConnectionFactory的创建者线程。
故本人修改为PeerConnection的重要操作,都在同一线程内执行,具体操作如下。
创建一个线程,线程的开头执行下面操作,后面关于媒体订阅,发布都可以通过PostThreadMessage将消息发送到此线程进行操作。

rtc::Win32SocketServer w32_ss;
rtc::Win32Thread w32_thread(&w32_ss);
rtc::ThreadManager::Instance()->SetCurrentThread(&w32_thread);

猜你喜欢

转载自blog.csdn.net/tusong86/article/details/127736655