webrtc的線程安全處理--消息處理


前言

webrtc中為了保證線程安全,在線程中使用消息隊列機制處理消息

正文

舉一個創建PeerConnectionFactory時的例子為例;此處已經創建了PeerConnectionFactory對象 pc_factory,此時需要對其進行Initialize()操作,首先創建了一個方法調用器

該方法調用器經過初始化之后保存着,實例對象需要調用的成員函數指針,和返回值,是用來調用方法的; 注意這個實現的虛函數OnMessage(),線程是通過該接口處理消息隊列中的消息

然后使用了方法調用器去調用Initialize去初始化pc_factory

Marshal是一個線程同步的方法調用函數,其通過當前對象初始化一個SynchronousMethodCall對象,然后調用其Invoke

該invoke()會判斷當前線程是否為目標線程,如果是就直接調用OnMessage()直接處理,;

否則會將調用,通過消息的方式發送給目標線程的消息隊列中

在線程檢查自己的消息隊列進行Dispatch()的時候,其會調用實現的虛函數OnMesaage()去處理該消息

執行該message的時候使用的是方法調用器的一個返回值去進行回調的,方法調用完成,r就有了實際的返回值,然后返回


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM