K. *_*osh 8 parallel-processing multithreading multiprocessor
我们可以在单个cpu上交替使用"并行编码"和"多线程编码"吗?
我在这两方面都没有多少经验,但我想把我的编码风格转移到上面的任何一个.
正如我现在发现的那样,许多单一应用程序已经过时,这对于未来的软件产业来说会更好吗?
bub*_*ker 13
多线程和并行编码/计算之间肯定存在重叠,主要区别在于目标处理体系结构.
多线程已被用于在具有共享内存的单个CPU上利用单个进程内的并发优势.在具有多个CPU的计算机上运行相同的程序可能会导致显着的加速,但通常是奖励而不是预期(直到最近).许多操作系统都有线程模型(例如pthreads),它们受益但不需要多个CPU.
多处理是针对多个CPU的并行编程的标准模型,从大型机器上具有多个CPU的早期SMP机器,到跨多台机器的集群计算,现在又返回到单台计算机上的多个CPU /核心. MPI是一种可以在许多不同体系结构中工作的标准.
当然,可以使用具有OpenMP等语言框架的线程来编写并行设计.我听说过依赖于理论上可以在任何地方运行的单独处理的多组件GUI /应用程序.实际上,前者比后者更多.
可能主要区别在于程序在多台机器上运行时,使用多线程是不切实际的,共享内存的现有应用程序将无法运行.
我不确定您认为“并行编码”是什么,但据我了解,并行编码是指生成由 CPU 并行执行的代码,因此多线程代码属于该描述。
这样,显然您可以互换使用它们(因为一个落入另一个之中)。
尽管如此,我还是建议你慢慢来,从基础开始学习。了解为什么多线程变得重要,进程、线程和纤程之间有什么区别,如何同步它们等等。
请记住,正如您所说的那样,并行编码非常复杂,特别是与顺序编码相比,因此请做好准备。也不要急于介入。仅仅因为您使用 3 个线程而不是 1 个线程,并不会让您的程序变得更快,甚至可能会使其变得更慢。您需要了解方法和原因。并非所有事物都可以并行,也不是所有可以并行的事物都应该并行。