什么时候应该使用multithreading? 如果不同的线程执行相互独立的任务,multithreading将是有益的吗?

这是我昨天晚上被拒绝的采访中唯一不能回答的两个问题。

问:什么时候应该使用multithreading?

答:“你的问题是非常广泛的,很less有非平凡的系统,只需要一个线程就可以简单,快速,可靠地实现function,例如:[挑选目标公司销售的典型系统,挑选其function的几个方面,可以更好地通过 – 沉重的CPU,通信,多用户 – 只是select一些可能的解释]。

问:如果不同的线程执行相互独立的任务,multithreading是否会有好处?

答:“执行任务取决于你的意思,如果线程以并发的方式处理相互独立的数据,multithreading确实是有利的 – 它减less了对锁的需求,并且以超线性的方式增加了死锁的概率OTOH,执行相同代码的线程没有问题,这是安全和非常普遍的。“

Rgds,Martin

当您想要执行繁重的操作而不“阻塞”stream量时,应该使用multithreading。
在后台线程中执行大量处理的UI中的示例,但UI仍处于活动状态。

如果线程执行相互排斥的任务,那么这是最好的,因为在所需线程之间没有同步的开销

当您从主事件循环中调用耗时的任务时,您一定要在GUI应用程序中使用multithreading。 同样适用于在执行I / O时可能会阻塞的服务器应用程序。

对于第二个问题,当你有多个CPU核心的机器通常是。 在这种情况下,这些独立的任务可以并行执行。

multithreading是一种在程序中引入并行的方法。 在任何情况下,如果程序中可能存在并行path(不依赖于其他部分的结果),可以使用它。

特别是现在所有这些多核心机器,这是一个应该利用的function。

一些例子是处理大数据 ,你可以把它分成块,并在多个线程, 文件处理等中完成。

关于第二个问题,如果这些任务是相互独立的 – 理由是最好的

  • 没有共享数据意味着没有争用
  • 不需要任何有序的处理(依赖),所以每个线程在有资源时都可以工作
  • 更容易实施

我会使用multithreading处理像渲染图像,蛮力计算等任务。基本上执行重复操作来达到结果的任务。

至于第二个问题,我会说可以。 当我编写我的渲染引擎,我广泛使用multithreading。 每一次通过都要求我操作大量的matrix,vector等,但是每一次通过都完全独立于其他所有通道。

如果任务可以被分解,可以并行执行,则可以使用multithreading。 像生产和消费,validation和保存,阅读和validation。

对于第二个问题,是的,如果一个程序执行独立的任务,那么将程序变成multithreading是有益的。

一般来说, 在CPU执行时间受到限制/瓶颈情况下,与其他区域(如IO)相比,可以使用multithreading。 第二个问题对于这种情况确实是很主观的。 例如,如果他们是相互独立的,但都做了沉重的IO,你可能不一定会得到很大的收益。

什么时候应该使用multithreading?

multithreading是一个同时执行多个线程的过程。 你应该使用multithreading,当你可以一起执行多个操作,这样可以节省时间。

如果不同的线程执行相互独立的任务,multithreading是否会有好处?

通常是的。 如果不同的线程执行相互独立的任务,multithreading通常是有益的,以便在单个线程中发生exception时不会影响其他线程。