記的上次看過UniRx里的源代碼,說是參考微軟的響應(yīng)式編程框架,響應(yīng)式編程里的一些理論不細(xì)說,只單說UniRx里的事件流里的事件壓入與執(zhí)行,與UE4的渲染線程設(shè)計(jì)有很多相同之處,如果有了解響應(yīng)式編程相關(guān)源碼如UniRx,應(yīng)該對(duì)UE4的渲染線程流程容易理解。
在這先說下UniRx相應(yīng)事件流的處理,讓不了解的同學(xué)大致有點(diǎn)印象,如當(dāng)前線程計(jì)劃,一般首先有個(gè)隊(duì)列,在相應(yīng)事件響應(yīng)后,把相應(yīng)處理方法填充到隊(duì)列中,另一邊則在隊(duì)列里,根據(jù)先進(jìn)先出的原則,不斷執(zhí)行隊(duì)列里的方法。說起來比較簡(jiǎn)單,主要是這里只拿出UniRx里的一個(gè)執(zhí)行計(jì)劃的事件流來說,另外的相關(guān)響應(yīng)式編程概念與本文無關(guān),也就不提起來說。
回到正題,說了UE4渲染流程的設(shè)計(jì)與上面很多相同,如此,我們先簡(jiǎn)單來說明下相關(guān)UE4里的類,與上面說的來對(duì)應(yīng)。
FBaseGraphTask: 上面說到事件流,那么這個(gè)類在這,就是事件流里的每個(gè)事件。
TGraphTask: FBaseGraphTask的一個(gè)子類模版類,模版類要求有方法DoTask.(注意這里,后面要說。相應(yīng)在此處簡(jiǎn)單理解成C#里的泛型約束,雖然C#直接做不到這點(diǎn),可以簡(jiǎn)接使用泛型約束加接口實(shí)現(xiàn))
FTaskThreadBase: 簡(jiǎn)單來說,這個(gè)類里放的是事件流,以及相應(yīng)處理事件流的一些方法,如
EnqueueFromThisThread: 壓入事件流中。
ProcessTasksUntilQuit: 循環(huán)執(zhí)行事件流里方法,直到有要求結(jié)束信號(hào)。
IsProcessingTasks: 是否正在執(zhí)行方法。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26