OK,所以首先清一色創建一個新的線程確實有一些最小開銷,但你只能創建線程一次(或幾次)...所以,除非你正在創建數百個的線程(你不應該這樣做),那麼你不需要擔心開銷。
讓我們看看你的第一個例子:
Thread thread;
thread = new Thread(new ThreadStart(DoNetworkThing));
// you should set the thread to background, unless you
// want it to live on even after your application closes
thread.IsBackground = true;
thread.Start();
如果用該模型堅持,在DoNetworkThing
功能應該是這樣的:
void DoNetworkThing()
{
while(someConditionIsTrue)
{
// do the networking stuff here
}
}
我相信,在你的下一個嘗試你做像這樣:
Thread thread = new Thread(()=>
{
while(true)
{
DoNetworkThing();
}
});
thread.IsBackground = true;
thread.Start();
這兩種方法都很好,b唯一的區別是DoNetworkingThing
的內容。在第二種方法將是這樣的:
void DoNetworkThing()
{
// do the networking thing, but note
// that this time your infinite while
// loop is outside the function
}
現在你說,無論這些嘗試是很慢的,但在你的例子給出任何將表明,應該有任何明顯的性能影響。如果你能夠:
- 給我們一個例子,它會證明減速。
- 告訴我們在遊戲機上運行的機器上有多少核心。
最後,如果你正在使用線程交融,那麼我會強烈建議你拾一本好書多線程和真的熟悉它背後的概念,經過練習,寫一對夫婦簡單的程序。這將花費你幾個月的時間,但如果你不熟悉線程,那麼它將幫助你學習如何避免很多醜陋的錯誤。
很多人推薦Joe Duffy的Concurrent Programming on Windows,但隨時也可以檢查some other C# multithreading books。
它的將是很難單從描述出來。請從您的應用程序中發佈示例代碼。還請包括你如何衡量你的性能 – luke 2010-07-02 00:51:27
請格式化你的代碼。當您發佈代碼時,您需要選擇它並按101010按鈕。 – Kiril 2010-07-02 04:29:57