青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 94, comments - 250, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

Nebula3的多線程架構

Posted on 2008-12-14 21:57 Condor 閱讀(685) 評論(0)  編輯 收藏 引用

Nebula3的代碼運行在兩種根本不同的方案中. 第一種方案我稱之為”Fat Thread”. 一個Fat Thread在一個線程中運行一個完整的子系統(如渲染, 音頻, AI, 物理, 資源管理), 并且基本上鎖定在一個特定的核心上.

第二種類型的線程我叫它”Job”. 一個job是一些數據和用于處理這些數據的包裝成C++對象的代碼. 工作調度程序掌管了Job對象, 并且把工作分配給低負載的核心來保持它們一直處于忙碌狀態.

顯然, 挑戰就是設計一個經過全面考慮的系統, 以保持所有的核心一直均勻地忙碌著. 這不但意味著連續的活動需要在游戲每幀的空閑時期內輪流交替, 而且要求job對象不得不事先(如每幀前)創建好, 這樣才能在各種Fat Thread空閑時填充當前幀的空白.

這是我希望進行更多試驗和調整的地方.

第二個挑戰就是讓程序員的工作盡量的簡單. 一個游戲應用程序員(邏輯程序員)在任何時候都不應該關心他運行在一個多線程的環境中, 不應該擔心會產生死鎖或改寫了其它線程的數據, 也不應該瞎搞一些臨界區, 事件和信號量. 同樣, 整個引擎的架構也不應該是”脆弱的”. 大部分傳統的多線程代碼在一定程度上都會發生紊亂, 或者忘記了臨界區而打亂數據.

當線程間需要進行數據共享和通信時, 多線程就變得很棘手. 像兩個臨界區這樣的解決方案也會導致脆弱代碼問題.

從大的角度來說, Nebula3通過一個”并行Nebula”的概念解決了這個兩個問題. 其思想就是運行了一個完整子系統的”Fat Thread”都有自己的最小Nebula運行庫, 這個最小運行庫剛好包含了這個子系統需要的部分. 因此, 如果這個運行在它自己線程中的子系統需要進行文件訪問, 它會有一個跟其它Fat Thread完全分離的文件服務器(file server). 這個解決方案的優點是, 大部分Nebula中的代碼都不需要知道它運行在一個多線程的環境中, 因為在fat thread之間沒有數據進行共享. 運行著的每個最小Nebula內核是跟其它Nebula內核完全隔離的. 缺點就是, 重復的數據會浪費一些內存, 但是我們只是占用幾KB, 而不是MB.

這些數據冗余消除了細密的鎖定, 并且解決把程序員從思考每一行代碼的多線程安全性中解放了出來.

當然, 從某種意義上說Fat Thread間的通信是肯定會發生的, 要不然這整個思想就沒有意義了. 方法就是建立一個且只有一個的標準通信系統, 并且保證這個通信系統是可靠而快速的. 這就是消息系統的由來. 要跟一個Fat Thread通信的話只有發送一個消息給它. 消息是一個簡單的C++對象, 它包含了一些帶有get/set方法的數據. 通過這個標準的通信手段, 實際上只有消息子系統才需要是線程安全的(同樣, 訪問跟消息相關的資源時, 如內存緩沖區, 必須受到約束, 因們它們代表了共享數據). (xoyojank: 我說咋那么多Message…)

這樣雖然解決了Fat Thread方案中大多數的多線程問題, 但沒有解決Job對象的任何事情. Nebula3很有可能需要約束一個Job對象能做什么和不能做什么. 最直接的行為就是限制job做內存緩沖區的計算. 那樣的話, job中就不能存在復雜的運行庫(不能文件I/O, 不能訪問渲染等等). 如果這樣還不夠的話, 必須定義一個”job運行時環境”, 就像Fat Thread中的那樣. 因為一個job不會發起它自己的線程, 而且還會被調度到一個已經存在的線程池中. 就這個方面來說, 這不存在什么問題.

到現在為止(xoyojank: 2007/01/21, 最新版本已經實現了多數子系統的多線程化), 只有IO子系統作為概念證明在Fat Thread中得到實現, 并且它運行得很今人滿意. 在做傳統的同步IO工作時, 一個Nebula3程序可以直接調用本地線程的IO子系統. 所以像列出文件夾的內容或刪除一個文件, 只會調用一個簡單的C++方法. 對于異步IO工作, 定義了一些常見的IO操作消息(如ReadStream, WriteStream, CopyFile, DeleteFile, 等等). 進行異步IO只需要幾行代碼: 創建一個消息對象, 填充數據, 并發送這個消息到一個IOInterface單件. 如果必要的話, 這可能會需要等待和輪詢異步操作.

這樣的好處就是, 整個IO子系統沒有一行多線程意義上的代碼, 因為各個在不同的Fat Thread中的IO子系統是完全隔離的(當然, 同步肯定會發生在一些IO操作上, 但那都留給操作系統了).


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99精品欧美一区二区三区| 一本色道久久综合一区| 久久精品卡一| 久久av老司机精品网站导航| 国产精品一区二区久激情瑜伽| 欧美一区二区三区在线视频| 亚洲一区视频在线| 国产亚洲一二三区| 欧美国产日韩视频| 欧美好骚综合网| 亚洲在线视频一区| 午夜精品在线视频| 一色屋精品视频在线观看网站| 欧美顶级艳妇交换群宴| 欧美激情一区二区三区在线视频| 一区二区久久久久| 亚洲欧美精品在线| 在线播放亚洲| 亚洲精品美女在线观看| 国产精品白丝jk黑袜喷水| 欧美一区二区黄| 久久夜色精品国产亚洲aⅴ| 亚洲精品一区二区三区婷婷月 | 久热综合在线亚洲精品| 久久久国产精品亚洲一区| 久久久久免费视频| 亚洲影院免费| 久久婷婷成人综合色| 一本色道88久久加勒比精品| 欧美一区二区高清| 中文久久乱码一区二区| 久久精品国产视频| 亚洲欧美经典视频| 女人香蕉久久**毛片精品| 亚洲女同在线| 欧美1区免费| 久久久精品日韩欧美| 欧美另类99xxxxx| 麻豆久久精品| 国产精品亚洲视频| 久久精品日韩一区二区三区| 欧美电影在线| 久久婷婷人人澡人人喊人人爽| 欧美日韩国产小视频| 美日韩精品免费| 国产日韩欧美精品综合| 日韩天堂在线视频| 亚洲精品一区二区三区av| 久久不射2019中文字幕| 午夜激情综合网| 欧美日韩在线免费观看| 欧美顶级少妇做爰| 狠狠色狠狠色综合人人| 午夜欧美不卡精品aaaaa| 亚洲一区二区三区免费在线观看| 欧美二区在线观看| 免费久久99精品国产自| 影视先锋久久| 久久精品国产精品| 久久亚洲精选| 激情综合中文娱乐网| 欧美一区二区三区在线播放| 久久超碰97人人做人人爱| 国产精品爱啪在线线免费观看| 日韩视频―中文字幕| 99视频精品免费观看| 欧美久久九九| 亚洲精品中文字幕在线观看| 亚洲精品一二区| 欧美日本在线一区| 亚洲伦理精品| 亚洲欧美视频在线| 国产精品亚洲成人| 欧美一乱一性一交一视频| 久久国产欧美| 影音欧美亚洲| 欧美寡妇偷汉性猛交| 亚洲人精品午夜在线观看| 99国内精品久久| 国产精品电影网站| 亚洲欧美另类在线观看| 久久精品人人做人人综合| 伊人天天综合| 欧美精品色综合| 中文av字幕一区| 久久久久久久久岛国免费| 亚洲国产另类久久精品| 欧美精品电影在线| 亚洲一二三四久久| 久久综合伊人| 亚洲精品之草原avav久久| 欧美日韩成人网| 午夜一区二区三区不卡视频| 蜜桃av一区二区| 亚洲午夜久久久久久久久电影网| 国产精品入口夜色视频大尺度| 欧美在线视频免费| 亚洲精品久久久蜜桃| 欧美一区二区在线观看| 永久久久久久| 国产精品久久婷婷六月丁香| 欧美在线网址| 亚洲日本中文字幕| 久久国产一区| 99精品国产福利在线观看免费| 国产精品超碰97尤物18| 久久婷婷麻豆| 亚洲一区二区免费看| 欧美韩国日本综合| 欧美一区二区三区的| 亚洲国产一区二区视频| 国产精品丝袜xxxxxxx| 欧美aⅴ99久久黑人专区| 西西裸体人体做爰大胆久久久| 亚洲高清久久网| 久久久久综合一区二区三区| 一区二区三区四区五区视频 | 欧美黑人国产人伦爽爽爽| 亚洲主播在线观看| 亚洲精品小视频在线观看| 麻豆精品在线视频| 久久gogo国模裸体人体| 在线中文字幕一区| 亚洲激情中文1区| 一区二区在线观看av| 国产欧美va欧美va香蕉在| 欧美日韩精品一区| 久久字幕精品一区| 久久久国产精彩视频美女艺术照福利| 一区二区三区欧美视频| 亚洲国产精品久久人人爱蜜臀| 亚洲国产99精品国自产| 国产视频亚洲精品| 国产精品乱码| 欧美偷拍一区二区| 欧美女同视频| 欧美精品日韩一本| 欧美黄色小视频| 免费观看一区| 免费成人黄色| 欧美成人在线影院| 欧美精品 国产精品| 欧美精品v国产精品v日韩精品| 久久国产欧美日韩精品| 久久xxxx| 久久精品人人爽| 久久亚洲精选| 久久综合中文色婷婷| 美日韩丰满少妇在线观看| 麻豆成人小视频| 欧美国产日韩视频| 欧美美女bb生活片| 欧美特黄一级| 国产日韩欧美精品在线| 加勒比av一区二区| 亚洲国产天堂久久综合| 亚洲欧洲免费视频| 一区二区欧美在线观看| 亚洲一级黄色| 久久久国产一区二区三区| 久久夜色精品亚洲噜噜国产mv| 久久天堂av综合合色| 欧美激情一区二区三区蜜桃视频| 亚洲国产片色| 99国产精品久久久| 性色av一区二区三区在线观看| 欧美一级成年大片在线观看| 久久黄色影院| 欧美精品免费在线| 国产精品一区二区三区免费观看 | 久久亚洲私人国产精品va媚药 | 亚洲美女av电影| 亚洲网站在线观看| 久久久www成人免费无遮挡大片 | 国产精品99久久久久久www| 亚洲欧美不卡| 免费的成人av| 国产精品porn| 亚洲国产高清一区| 亚洲在线电影| 美腿丝袜亚洲色图| 99亚洲一区二区| 久久亚洲综合网| 国产精品呻吟| 亚洲黄色在线看| 欧美一二三视频| 91久久精品国产91性色tv| 亚洲在线一区二区三区| 六月丁香综合| 国产欧美在线观看| 一区二区三区四区五区精品视频| 久久久一区二区三区| 日韩午夜激情av| 蜜桃久久av一区| 国产自产v一区二区三区c| 一本色道**综合亚洲精品蜜桃冫| 裸体素人女欧美日韩| 亚洲欧美精品在线观看| 欧美网站大全在线观看| 亚洲精品一区二区三区在线观看|