MultiCore系统上并行问题之外的线程有什么用?

Rob*_*nes 2 language-agnostic concurrency multithreading

线程使程序的设计,实现和调试变得更加困难.

然而,许多人似乎认为可以线程化的程序中的每个任务都应该是线程化的,即使在单个核心系统上也是如此.

我可以理解线程类似MPEG2解码器的东西,它将在多核cpu(我已经完成)上运行,但是当你谈论单个核心系统甚至是多核系统时,什么可以证明线程的显着开发成本是合理的如果您的任务没有从并行实现中获得显着的性能?

或者更简洁地说,什么样的非绩效相关问题证明线程是正确的?

编辑

好吧,我刚遇到一个不受CPU限制的实例,但线程产生了很大的不同:

TCP,HTTP和多线程甜点

当尝试通过高延迟网络连接将带宽最大化到另一个对等方时,多个线程非常有用.非阻塞I/O将使用明显更少的本地CPU资源,但设计和实现起来会更加困难.

Kon*_*man 6

例如,在不阻止用户界面的情况下执行CPU密集型任务.


pax*_*blo 5

您可能在等待资源的任何应用程序(例如,阻止来自网络套接字或磁盘设备的I/O)都可以从线程中受益.

在这种情况下,线程阻塞慢操作可以进入休眠状态,而其他线程继续运行(包括在某些操作系统,图形用户界面线程,如果操作系统不能联系了一段时间,将提供使用的机会摧毁它,认为它以某种方式陷入僵局).

所以它不仅适用于多核机器.