这是一个相当广泛的问题,但我是初学者 - 中级程序员,刚刚完成了一个应用程序类,其中一个主题是多线程。我们做了各种家庭作业,包括用按钮创建GUI,这些按钮可以开始一些长时间的绘制过程(从数据库中读取等)。
在这些情况下,我们将创建单线程和多线程版本,其中执行处理的任务与其他所有内容在一个单独的线程上,以便在按下按钮时应用程序不会停止。
我的问题:
今天上班时,我在MS Outlook中搜索了一个希望找到特定电子邮件的特定字词。不幸的是,这个词是常见的,并且出现了一亿封电子邮件。有一个停止按钮,但按下它绝对没有...
从我的班级经验来看,这不是将搜索过程放在自己的线程上不会导致上述问题的示例吗?当然,微软不会做那样愚蠢的事......有没有理由这不会成为自己的线程?如果它是它自己的线程,那么为什么应用程序停止而不响应按下停止按钮? (与OS相关的原因?)。
所有这些都是在Windows XP 32位双核系统上进行的,如果有相关的话。
真的,我只是想更好地了解多线程发挥作用的地方以及如何学习应用它的位置。是否有任何明显受益于多线程的知名应用程序的例子?是否真的可以清楚地区分?
谢谢!
[R
答案 0 :(得分:1)
很可能在搜索确实是在另一个线程中,但是将结果传递给主线程并绘制它们实际上是在使主线程陷入困境,以至于它没有时间来响应您的请求
我知道这样一个问题的唯一解决方法是限制搜索过程可以返回的结果数量。如果您不想限制结果数,请在不同的线程中绘制消息窗格。但是,这很难非常,因为大多数gui工具包都是单线程的。此外,即使如此,线程也可能(在极端情况下)占用大量内存,即使这样也会减慢主要的gui。
答案 1 :(得分:0)
每当你看到一个应用程序的启动画面时,这是一个很大的指标,在一个单独的线程上发生了一些事情。
这更适合美学用途,但它有助于用户了解机器在后台进程加载时不会卡住。