SDL 開發實戰(七): SDL 多線程與鎖機制


為什么要用多線程?在音視頻領域主要是實現音視頻同步。實現了音視頻同步,我們的播放器就基本上合格了。

 

這里我們將講解一下SDL的多線程與鎖機制。

 

多線程的好處主要是能使程序更加充分利用硬件(主要是CPU)的性能。但是也存在相應的隱患,如果多線程管理不好,會出現協調問題。

 

引進的機制:線程的互斥與同步

 

互斥:同一個資源在一定時間內只能由一個方法訪問。

同步:一個方法完成后的內容需要同步到其他的方法,在由其他方法操作完成后的內容。

 

鎖與信號量

 

鎖用於完成互斥;信號量用於同步。

 

鎖的種類:讀寫鎖、自旋鎖、可重入鎖。

 

SDL線程創建:SDL_CreateThread 

SDL線程等待:SDL_WaitThead

SDL互斥鎖:SDL_CreateMutex / SDL_DestroyMutex

SDL鎖定互斥:SDL_LockMutex / SDL_UnlockMutex

SDL 條件變量(信號量):SDL_CreateCond / SDL_DestoryCond

SDL 條件變量(信號量)等待 / 通知 :SDL_CondWait / SDL_CondSingal

 

SDL鎖和條件變量使用場景:主要用於AVPacketList隊列的讀取控制,真正的用法需要在實際項目中進行理解和領會。

 

下圖是SDL開發播放器的線程模型,供大家開發和學習時參考:

 

   

    

 


免責聲明!

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



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