記的上次看過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í)行方法。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式