線程模型:將任務與執行分離
posted on 2008-08-23 22:25 x-matrix 閱讀(1713) 評論(14) 編輯 收藏 引用
MMORPG無縫服務器設計
posted on 2008-08-23 22:25 x-matrix 閱讀(1713) 評論(14) 編輯 收藏 引用
通過functor,可以做到將成員函數,C式函數,operator(),等綁定為線程函數.
我覺得這種方式起碼比繼承重寫某個虛函數來得靈活.
回復 更多評論
我也是為獲得多線程的能力,通過從一個線程對象基類繼承,重載特定的成員函數來實現。也許還有更好的方法。 回復 更多評論
我認為這是Aspect-Oriented Programming處理的問題,不是OO處理的問題。想堅持用OO的辦法,意味著重構。于是你上述的問題也就蕩然無存了,因為重新設計的必然可以滿足要求。 回復 更多評論
@ 陳梓瀚
不論是面向對象,還是面向方面,都要減少重構。良好的設計會盡可能減少這種需要,即使重構,也要盡量減少原有代碼的修改。
這個問題是面向對象還是面向方面,值得考慮。 回復 更多評論
如果是由于架構的原因導致需求不被滿足的話,就不能執著于減少修改了。 回復 更多評論
其實不一定要過度追求線程實現,一般的實現方式是啟動幾個線程提供對外服務,有任務提交后,分配運行。這樣可伸縮性也比較強。 回復 更多評論
@hdqqq
任務是什么呢?函數?類成員函數?函數對象?函數/成員函數聲明是什么樣的?一定要滿足某種聲明形式嗎?我已有代碼不滿足怎么辦?這些都是要解決的問題。
回復 更多評論
任務只是抽象意義上的需要運行的代碼,函數和成員函數只是對于人來說的,對于機器來說,都是一樣的,至于已有函數滿不滿足接口我想是架構需要考慮的問題,其實一旦代碼編譯好了,其調用方式就定了,如果非要滿足所有的調用方式,可能rpc或者com的方式更適合一些。
我以前寫的關于 函數和線程方面調用的文章。
http://blog.csdn.net/hdqqq/archive/2005/06/29/407674.aspx 回復 更多評論
@hdqqq
我覺得解決這個問題非模板莫屬,其他的方式無一例外都需要用戶添加一堆對用戶來說根本沒任何作用的代碼。看看com,里面一堆的古怪的符號,光名字,已經讓人惡心。 回復 更多評論
好像你要講的就是boost::thread,我沒猜錯吧?
回復 更多評論
只有注冊用戶登錄后才能發表評論。 | ||
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
![]() |
||
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
|
||
|