Build a Windows CE OS when develpment workstation that has Multiple Processors

當你使用一個多處理器的工作站去發展Windows CE系統,而你的dirs與sources檔案有相依性時需要使用 SYNCHRONIZE_DRAIN 與 SYNCHRONIZE_BLOCK巨集(marco)去同步,避免產生一些Build時的問題。

當使用多處理器的工作站去執行Build.exe 時,Build.exe 會盡可能的產生多個執行緒去同時建立不同目錄下的目標檔案。當Build.exe 在目錄內中的sources 包含SYNCHRONIZE_DRAIN=1時,Build.exe 會將該目錄之前所有目錄都Build完後,才會開始Build這個目錄。

例如下列這個目錄結構中,而目錄 c 需要跟目錄 a 中產生的 static library連結

dirs= a
b
c      # sources has SYNCHRONIZE_DRAIN=1
當BUILD_MULTIPROCESSOR=3時,Build.exe 會去同時處理 a, b 與c的目錄,但是處理目錄c的thread會暫停到a, b都完成了以後,才會開始去build。

而當Sources 檔案中含有SYNCHRONIZE_BLOCK=1時,Build.exe 將會阻擋(Block)其他執行緒對其他目錄的處裡,直到等完成當前目錄後,才會繼續使其他目錄。

在使用多處理器的工作站去Build之前,需要設定環境變數(Environment variable)

set BUILD_MULTIPROCESSOR=N, N為一般為核心數目,系統預設為1,當使用Build.exe -M[N] 可以覆蓋環境變數的設定。而實際上N的大小除了與系統處理器的數目也與RAM的大小與HardDisk的效能有很大的相關性。一個最佳化的N可以減少Platform Build 去完成建造Windows CE 系統的時間。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: