2013-12-11 154 views
1

我是新来的桌面应用程序,看到有无处不在的线程。为什么需要线程

我不明白为什么我们在这里使用它,而不是在web应用程序中。

我们可以直接调用方法而不是线程。

+0

你有没有任何“遍地?”的例子? –

+0

你看过代码,看看它在创建线程的位置和原因吗? – JaredPar

+0

当他们需要时,我在web应用程序中使用它们。 – StingyJack

回答

6

“无处不在的线程”可能是一个不祥的迹象,可能是过去的无能,但人们在桌面应用程序中使用多线程的主要原因是允许长时间运行的事情发生,而不会冻结用户界面应用程序。

传统的Windows GUI应用程序有一个'主线程',它负责处理从操作系统接收到的消息。这些消息用于所有鼠标/键盘交互,因此当你停止处理它们时,应用程序停止响应(在几秒钟之后,Windows本身会灰掉应用程序,并在标题栏中放置“停止响应”。 )

为了避免这种丑陋,人们将需要很长时间的活动(要么是因为需要大量的CPU,要么是因为可能正在等待I/O(磁盘,网络等))移动到其他线程上。这意味着主线程可以自由地保持泵送信息。

您不明确启动主线程 - Windows在应用程序启动时将其提供给您。

您需要非常小心后台线程和主线程之间的交互 ​​- 有一系列的规则和限制,如果不遵循这些规则和限制,会给您带来一些问题,这些问题可能不会立即显示,一致或在你的机器上。那并不意味着他们不在那里......

+0

很好的答案,我认为值得一提的是(或者详细阐述)多线程可能带来的问题,如果你不小心的话。也就是说,当多个线程共享一个公共资源时,会发生死锁和竞态条件。如果你有相互等待的线程来完成他们在一个公共资源上的工作,那么你首先要打破线程的目的! :) – ryrich

相关问题