处理数据的方式是以比我的处理速度快一倍的速度

时间:2015-02-26 07:34:39

标签: c++ multithreading

我被问到这个问题我的某个人并且有点困惑。

问:你将如何处理速度比我的处理速度快一倍的数据?

我想到以下几点:

  1. 使用队列来处理这个问题。但如果我只使用队列然后大小 所需的队列将是非常大的,我仍然会滞后 背后。每次我都会有更多的数据 处理。我将继续以指数方式继续。
  2. 我使用一个线程来读取数据,另外两个用于处理。但 假设我的数据必须按顺序处理然后发生的事情。
  3. 我仍然感到困惑,欢迎任何有关类似问题的帮助。我知道可能有一个标准的解决方案,但我不知道相同。

    我想在c / c ++中实现

1 个答案:

答案 0 :(得分:1)

简短回答:您需要某种并行处理。这并不容易。

答案很长:根据您的工作负载要求,以及瓶颈是在IO还是在CPU中,它可能只是在单核,多核处理器或共享内存多处理器上进行多线程处理,甚至可以在多个分布式多处理器之间进行多线程处理节点。如果问题很简单(令人尴尬的并行),或者你需要明确地进行一些并行编程,那么只需在工作单元之间分配和平衡工作就可以了。 。基本上有两种并行编程模型:OpenMP,用于具有共享存储器(对称或非均匀访问)的多核系统中的多线程;和MPI,用于低延迟高带宽网络中的分布式处理。为了进一步复杂化,OpenMP和MPI可以在混合并行编程运行时环境中完美地运行:OpenMP在每个节点上的核之间分配和协调并行计算负载,MPI在节点之间进行。请注意,这是非常艰苦的工作。