live555學習筆記3 訊息迴圈

2021-09-06 04:33:31 字數 590 閱讀 1888

三 訊息迴圈

看服端的主體:live555mediaserver.cpp中的main()函式,可見其建立乙個rtspserver類例項後,即進入乙個函式env->taskscheduler().doeventloop()中,看名字很明顯是乙個訊息循壞,執行到裡面後不停地轉圈,生名不息,轉圈不止。那麼在這個人生的圈圈中如何實現rtsp服務和rtp傳輸呢?別想那麼遠了,還是先看這個圈圈中實現了什麼功能吧。

void basictaskscheduler0::doeventloop(char* watchvariable) }basictaskscheduler0從taskscheduler派生,所以還是乙個任務排程物件,所以依然說明任務排程物件是整個程式的發動機。

迴圈中每次走一步:singlestep()。這走一步中都做些什麼呢?

總結為以下四步:

1為所有需要操作的socket執行select。

2找出第乙個應執行的socket任務(handler)並執行之。

3找到第乙個應響應的事件,並執行之。

4找到第乙個應執行的延遲任務並執行之。

可見,每一步中只執行三個任務佇列中的一項。下面詳細分析函式singlestep():

live555學習筆記3 訊息迴圈

三 訊息迴圈 看服端的主體 live555mediaserver.cpp中的main 函式,可見其建立乙個rtspserver類例項後,即進入乙個函式env taskscheduler doeventloop 中,看名字很明顯是乙個訊息循壞,執行到裡面後不停地轉圈,生名不息,轉圈不止。那麼在這個人生...

live555學習筆記3 訊息迴圈

三 訊息迴圈 看服端的主體 live555mediaserver.cpp中的main 函式,可見其建立乙個rtspserver類例項後,即進入乙個函式env taskscheduler doeventloop 中,看名字很明顯是乙個訊息循壞,執行到裡面後不停地轉圈,生名不息,轉圈不止。那麼在這個人生...

Live555學習筆記

live555原始碼 官網 關於live555編譯 linux編譯 1.進入live555目錄 cd live 2.執行genmakefiles檔案 genmakefiles linux 3.makefile windows編譯 無關於入口函式 標頭檔案位置 無 原始檔位置 mediaserver ...