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

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

Nebula3的多線程架構

Posted on 2008-12-14 21:57 Condor 閱讀(659) 評論(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操作上, 但那都留給操作系統了).

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 亚洲日本中文字幕免费在线不卡| 久久久久天天天天| 亚洲欧洲99久久| 国语自产精品视频在线看| 欧美日韩成人| 欧美国产在线电影| 一区二区三区精密机械公司| 欧美日韩免费在线视频| 欧美精品www| 亚洲一区精彩视频| 午夜精品久久久久久久白皮肤| 黄色日韩网站| 亚洲黄色在线| 一区二区三区久久久| 国产欧美日韩不卡| 久久综合中文色婷婷| 欧美第一黄网免费网站| 99视频+国产日韩欧美| 亚洲欧美日本日韩| 在线观看一区欧美| 亚洲婷婷综合色高清在线| 激情综合五月天| 亚洲美女诱惑| 伊伊综合在线| 在线午夜精品| 亚洲人成人一区二区三区| 中日韩视频在线观看| 在线播放亚洲| 亚洲中字黄色| 日韩亚洲一区二区| 久久精品综合| 亚洲影院一区| 欧美国产一区视频在线观看| 久久久噜噜噜久久中文字免 | 午夜精品国产更新| 久久亚洲视频| 欧美亚洲视频在线看网址| 蜜桃av综合| 久久久精品久久久久| 欧美偷拍一区二区| 亚洲电影欧美电影有声小说| 国产欧美一区二区三区在线老狼 | 久久九九国产精品| 午夜欧美电影在线观看| 欧美精品久久99| 欧美成人精品福利| 国产一区二区三区免费在线观看 | 免费欧美视频| 激情婷婷亚洲| 亚欧成人精品| 性娇小13――14欧美| 欧美日韩国产成人在线免费| 亚洲美女视频网| 久久久综合精品| 久久综合色播五月| 国产亚洲午夜| 欧美亚洲三区| 久久久xxx| 国产亚洲精品7777| 亚洲一区二区在线免费观看| aaa亚洲精品一二三区| 欧美成人a视频| 亚洲国产精品成人一区二区 | 亚洲精品综合| 欧美激情按摩| 亚洲欧洲一区二区天堂久久 | 亚洲片在线资源| 米奇777在线欧美播放| 欧美激情中文字幕一区二区 | 国产精品久久久久久一区二区三区 | 国产精品地址| 9l视频自拍蝌蚪9l视频成人| 欧美黄免费看| 亚洲国产乱码最新视频| 国产精品视区| 亚洲欧美日韩精品久久| 性做久久久久久久免费看| 亚洲国产精品电影在线观看| 久久aⅴ国产紧身牛仔裤| 国产美女一区| 香蕉尹人综合在线观看| 久久久久久久久岛国免费| 狠狠色狠色综合曰曰| 久久亚洲欧美| 亚洲三级毛片| 国产精品久久久久久久7电影 | 欧美日本亚洲| 一区二区三区产品免费精品久久75| 亚洲欧美在线网| 影音先锋久久| 欧美日韩一区二区三区| 亚洲影音先锋| 美腿丝袜亚洲色图| 日韩视频免费在线| 国产一区二区福利| 欧美福利小视频| 午夜久久影院| 最新中文字幕亚洲| 久久激情视频久久| 99精品视频免费观看| 国产日韩欧美亚洲一区| 欧美韩国日本一区| 午夜久久tv| 国产一区二区久久精品| 欧美精品激情blacked18| 亚洲欧美日韩精品久久| 亚洲日本成人| 久久综合伊人77777麻豆| 亚洲天堂久久| 亚洲日本成人在线观看| 国产精品视频不卡| 欧美精品aa| 久久视频这里只有精品| 亚洲一区在线播放| 91久久久久久久久| 久久亚洲春色中文字幕| 亚洲欧美综合v| 一本色道久久综合亚洲精品高清| 国产综合亚洲精品一区二| 欧美午夜一区二区福利视频| 欧美a级一区二区| 久久久999| 久久岛国电影| 性亚洲最疯狂xxxx高清| 亚洲小说欧美另类婷婷| 亚洲人线精品午夜| 亚洲福利国产| 欧美国产日韩在线观看| 久久综合久久综合久久综合| 欧美专区中文字幕| 欧美一级在线播放| 亚洲亚洲精品三区日韩精品在线视频| 影音先锋久久资源网| 国产午夜精品福利| 国产精品综合网站| 国产精品网站在线观看| 欧美日韩一区二区三区四区五区| 欧美69wwwcom| 欧美精品激情在线| 欧美三级日本三级少妇99| 欧美日韩视频一区二区| 欧美日韩亚洲一区| 国产精品久久久久aaaa九色| 欧美色视频一区| 国产精品初高中精品久久| 久久夜色精品一区| 国产九区一区在线| 国产三级欧美三级| 国产在线播放一区二区三区| 国内成+人亚洲| 伊人色综合久久天天五月婷| 亚洲娇小video精品| 亚洲人成毛片在线播放| 亚洲毛片一区| 亚洲一区二区三区在线| 欧美一区二区性| 久久综合色8888| 亚洲国产影院| 一本色道久久99精品综合| 亚洲午夜av| 久久精品人人爽| 欧美激情亚洲综合一区| 国产精品成人一区二区网站软件| 国产一区二区成人| 亚洲国产另类久久久精品极度| 日韩亚洲欧美在线观看| 亚洲欧美成人网| 美女诱惑黄网站一区| 亚洲片在线观看| 亚洲欧美日韩另类| 老色批av在线精品| 国产精品久久看| 亚洲国产人成综合网站| 亚洲一区亚洲二区| 老司机凹凸av亚洲导航| 亚洲免费精彩视频| 校园春色综合网| 欧美成人网在线| 国产日韩欧美亚洲一区| 野花国产精品入口| 久久成人18免费观看| 亚洲国产小视频在线观看| 亚洲一区免费看| 欧美1级日本1级| 久久精品国产免费看久久精品 | 欧美日韩三级视频| 欧美一级视频精品观看| 欧美日韩成人综合在线一区二区 | 久久精品人人| 国产精品福利在线观看| 亚洲激情亚洲| 麻豆9191精品国产| 亚洲欧美激情视频在线观看一区二区三区 | 99视频在线观看一区三区| 国产精品高潮粉嫩av|