可以通过多线程解决的性能不佳的示例

| 这是一个相当广泛的问题,但是我是一名初学者中级程序员,刚刚完成了一个应用程序类,并且其中一个主题是多线程。我们进行了各种家庭作业,其中涉及使用带有按钮的GUI制作图形界面,该按钮将启动一些漫长的绘制过程(从数据库中读取等)。 在这些情况下,我们将创建单线程版本和多线程版本,其中执行处理的任务与其他线程不在同一个线程上,以便在按下按钮时应用程序不会停止。 对我的问题: 今天在工作中,我在MS Outlook中搜索了一个特定的单词,希望找到特定的电子邮件。不幸的是,这个词很普遍,并且出现了1亿封电子邮件。有一个停止按钮,但是按下它绝对没有任何作用... 根据我的课堂经验,这不是将搜索过程放在自己的线程上不会导致上述问题的示例吗?微软肯定不会做那样的愚蠢的事情……是否有理由不将其作为自己的线程?如果它是自己的线程,那么为什么应用程序会停滞并且不响应按下停止按钮? (与OS相关的原因?)。 如果所有的话,所有这些都在Windows XP 32位双核系统上。 确实,我只是想更好地了解多线程在哪里起作用以及如何学习在哪里应用它。是否有一些明显受益于多线程或受多线程影响的著名应用程序示例?真的有可能甚至清楚地区分吗? 谢谢! [R
已邀请:
搜索确实确实有可能在另一个线程中进行,但是将结果传递到主线程并绘制它们实际上会使主线程陷入困境,以至于没有时间响应您的请求。 对于此类问题,我唯一知道的解决方法是限制搜索过程可以返回的结果数。如果不想限制结果数,请在其他线程中绘制消息窗格。但是,这非常困难,因为大多数gui工具箱都是单线程的。此外,即使这样,线程仍可能(在极端情况下)占用大量内存,以至于减慢了主GUI的速度。
每当您看到某个应用程序的启动屏幕时,即表示一个单独的线程上发生了一些大变化。 这更多是出于审美用途,但是它可以帮助用户了解在后台加载过程时机器不会卡死。

要回复问题请先登录注册