我最近看了this video on Google Chrome,很感興趣。它解釋說Google Chrome使用一個線程來處理IO,一個用於打開文件,一個用於模塊間通信。如何使用線程獲得穩定,快速的用戶界面?
我想我可以爲自己的應用程序使用類似的東西 - 目前相當混亂。
我想知道是否有任何有關這些線程化任務的最佳實踐或模式的優秀文章?
我最近看了this video on Google Chrome,很感興趣。它解釋說Google Chrome使用一個線程來處理IO,一個用於打開文件,一個用於模塊間通信。如何使用線程獲得穩定,快速的用戶界面?
我想我可以爲自己的應用程序使用類似的東西 - 目前相當混亂。
我想知道是否有任何有關這些線程化任務的最佳實踐或模式的優秀文章?
任何時候,你的應用程序的任務可以分爲不同的組,它是多線程的候選人。不過要警告的是,這是一個危險的遊戲 - 對於每篇關於優點的文章,有兩個關於多線程實現被咬的問題 - 它可能會產生只在特定配置(用戶計算機上)出現的錯誤,或更糟糕的是,不能在調試器中複製,因爲減慢執行的行爲足以導致錯誤出現(競爭條件對此行爲而言是臭名昭着的)。
拋開這個警告,多線程可以大大提升應用程序的實際性能和感知性能。這些都是.NET特定的,但給一個通用引物解釋的後臺線程的優勢,並保持你的UI響應:
是的,線程是可怕的:p至少它接縫我從來沒有完全設法「分成不同的組」。 我真正需要的是類似於設計模式的東西,僅用於線程。我認爲。 – 2010-05-09 16:59:05
第一個類似的東西有點幫助,但它們都是特定於實現的,而不是那麼多關於「想法」的東西。你知道任何關於分工和溝通模式的文章嗎? – 2010-05-09 17:30:10
特別是來自電影的這個想法 - 一個通信線程 - 它具有在其他線程之間發送消息的任務。我從來沒有想過像以前那樣的模式 – 2010-05-09 18:34:43
如果您使用.NET中,ThreadPool類是一個很好的起點,它爲您管理多線程的一些(但不是全部)細節。
另請參閱Threads and Threading MSDN上的主題,討論其優缺點。
使用什麼語言/平臺? Java的? 。淨? C?蟒蛇? – Oded 2010-05-07 19:10:25
您使用哪種語言/平臺?一般「線程和你」的文章很容易找到,但如果你提供更多的細節,我們可以發佈一些特定於平臺的迴應。 – SqlRyan 2010-05-07 19:10:53
我使用python和gtk。不過我知道所涉及的API非常好 - 我想。 我對一般線程任務和通信的例子更感興趣。 – 2010-05-08 16:22:41