Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 可通过多线程修复的性能差示例_Multithreading - Fatal编程技术网

Multithreading 可通过多线程修复的性能差示例

Multithreading 可通过多线程修复的性能差示例,multithreading,Multithreading,这是一个相当广泛的问题,但我是一个初级中级程序员,刚刚完成了一个应用程序类,其中一个主题是多线程。我们做了各种各样的家庭作业,包括用按钮制作GUI,这些按钮将启动一些漫长的过程(从数据库中读取数据等) 在这些情况下,我们将创建单线程和多线程版本,其中执行处理的任务是在一个独立于其他线程的线程上进行的,因此当按下按钮时,应用程序不会暂停 就我的问题: 今天上班时,我在MS Outlook中搜索了一个特定的单词,希望找到一封特定的电子邮件;不幸的是,这个词很常见,出现了一亿封电子邮件。有一个停止按钮

这是一个相当广泛的问题,但我是一个初级中级程序员,刚刚完成了一个应用程序类,其中一个主题是多线程。我们做了各种各样的家庭作业,包括用按钮制作GUI,这些按钮将启动一些漫长的过程(从数据库中读取数据等)

在这些情况下,我们将创建单线程和多线程版本,其中执行处理的任务是在一个独立于其他线程的线程上进行的,因此当按下按钮时,应用程序不会暂停

就我的问题:

今天上班时,我在MS Outlook中搜索了一个特定的单词,希望找到一封特定的电子邮件;不幸的是,这个词很常见,出现了一亿封电子邮件。有一个停止按钮,但按下它绝对没有任何作用


根据我的课堂经验,这不是一个将搜索过程放在自己的线程上不会导致上述问题的例子吗?微软肯定不会做那样愚蠢的事。。。有没有理由不让它成为自己的线程?如果它是自己的线程,那么为什么应用程序会停止运行,而不响应停止按钮呢?(操作系统相关原因?)

所有这些都是在WindowsXP32位双核系统上进行的,如果相关的话

实际上,我只是想更好地了解多线程在哪里发挥作用,以及如何学习在哪里应用它。有没有一些众所周知的应用程序明显受益于多线程还是受到多线程的影响?真的有可能分辨清楚吗

谢谢


R

很有可能搜索确实是在另一个线程中进行的,但将结果传递给主线程并绘制结果实际上会使主线程陷入困境,以至于它没有时间响应您的请求


我所知道的解决此类问题的唯一方法是限制搜索过程可以返回的结果数量。如果不想限制结果的数量,请在其他线程中绘制消息窗格。然而,这是非常困难的,因为大多数gui工具包都是单线程的。此外,即使如此,线程可能(在极端情况下)占用大量内存,甚至会减慢主gui的速度。

每当你看到应用程序的启动屏幕时,这是一个很大的迹象,表明在一个单独的线程上发生了一些事情


这更多是为了美观,但它可以帮助用户理解,当进程在后台加载时,机器不会被卡住。

“微软肯定不会做这样愚蠢的事情”…哈哈,别叫我雪莉。