2013-12-11 206 views
1

我是新來的桌面應用程序,看到有無處不在的線程。爲什麼需要線程

我不明白爲什麼我們在這裏使用它,而不是在web應用程序中。

我們可以直接調用方法而不是線程。

+0

你有沒有任何「遍地?」的例子? –

+0

你看過代碼,看看它在創建線程的位置和原因嗎? – JaredPar

+0

當他們需要時,我在web應用程序中使用它們。 – StingyJack

回答

6

「無處不在的線程」可能是一個不祥的跡象,可能是過去的無能,但人們在桌面應用程序中使用多線程的主要原因是允許長時間運行的事情發生,而不會凍結用戶界面應用程序。

傳統的Windows GUI應用程序有一個'主線程',它負責處理從操作系統接收到的消息。這些消息用於所有鼠標/鍵盤交互,因此當你停止處理它們時,應用程序停止響應(在幾秒鐘之後,Windows本身會灰掉應用程序,並在標題欄中放置「停止響應」。 )

爲了避免這種醜陋,人們將需要很長時間的活動(要麼是因爲需要大量的CPU,要麼是因爲可能正在等待I/O(磁盤,網絡等))移動到其他線程上。這意味着主線程可以自由地保持泵送信息。

您不明確啓動主線程 - Windows在應用程序啓動時將其提供給您。

您需要非常小心後臺線程和主線程之間的交互 ​​- 有一系列的規則和限制,如果不遵循這些規則和限制,會給您帶來一些問題,這些問題可能不會立即顯示,一致或在你的機器上。那並不意味着他們不在那裏......

+0

很好的答案,我認爲值得一提的是(或者詳細闡述)多線程可能帶來的問題,如果你不小心的話。也就是說,當多個線程共享一個公共資源時,會發生死鎖和競態條件。如果你有相互等待的線程來完成他們在一個公共資源上的工作,那麼你首先要打破線程的目的! :) – ryrich

相關問題