本文在查理的書架首先釋出,會在最快時間内更新到Nathan的技術空間上。
在上篇裡,我們知道P2PSim是基于libtask的,libtask的第一個任務是通過taskmain函數來啟動的。換而言之,taskmain是p2psim的主程式。下面的圖裡面給出了taskmain的主要流程。
根據圖示,taskmain先把-開頭的參數解析出來,然後讓Node類去解析protocol_file,然後讓Topology類去負責解析topology_file。Topology在解析topology_file後調用Network類生出了第一個并發任務,這個任務負責根據topology建立peer的vector。随後調用了yield放棄cup讓Network任務去充分處理topology對應的Peer生成工作。
然後,taskmain讓EventGenerator類根據event_file生成了對應的事件發生器(EventGenerator)的對象,這裡采用了工廠模式,根據配置檔案生成對應的事件發生器。同時還生成對應的觀察者對象。 生成的發生器對象也是一個從Threaded派生的家夥,是以此刻第三個并發任務也開始運作了。
最後,taskmain周遊了所有的node對象,讓他們完成初始化。随後完成所有工作退出。
本文轉自nathanxu 51CTO部落格,原文連結:http://blog.51cto.com/nathanxu/246528,如需轉載請自行聯系原作者