Multithreading 多核体系结构与多线程

Multithreading 多核体系结构与多线程,multithreading,operating-system,multicore,Multithreading,Operating System,Multicore,我们能在没有多线程的情况下充分利用多核体系结构的优势吗 我们能在没有多线程的情况下充分利用多核体系结构的优势吗 对于传统环境;您可以在不使用多线程的情况下享受多CPU的一些好处(例如,如果您有8个CPU,并且正在运行8个单独的单线程进程,那么…) 对于非传统环境,谁知道呢?例如,整个系统可能使用actor模型(软件分为单独/独立的对象,其中每个对象都是事件处理程序),其中操作系统有一个挂起事件队列,每个CPU在循环中“从队列中获取事件,为该事件执行对应对象的事件处理程序”。在这种情况下,您可以说

我们能在没有多线程的情况下充分利用多核体系结构的优势吗

我们能在没有多线程的情况下充分利用多核体系结构的优势吗

对于传统环境;您可以在不使用多线程的情况下享受多CPU的一些好处(例如,如果您有8个CPU,并且正在运行8个单独的单线程进程,那么…)


对于非传统环境,谁知道呢?例如,整个系统可能使用actor模型(软件分为单独/独立的对象,其中每个对象都是事件处理程序),其中操作系统有一个挂起事件队列,每个CPU在循环中“从队列中获取事件,为该事件执行对应对象的事件处理程序”。在这种情况下,您可以说根本没有线程(只有CPU和事件),因此没有多线程。

没有多线程,我们能充分利用多核的好处吗?当然不是。但是我们仍然可以有一些平行性

如前所述,我们可以在不同的处理器上运行多个独立的进程,以提高全局计算机性能

通过进程间通信()作为管道或共享内存,仍然可以进行并行处理。例如,如果执行

任务集0x01排序|任务集0x02 uniq

您将运行两个进程,核心0上的sort和核心1上的uniq,这些进程将通过管道(在共享内存中实现)进行通信。请注意,这只是一个示例,操作系统确实在不同的内核上运行新进程,而不使用taskset指令

使用posix,您可以在不同的内核上运行并行进程,并在专用内存区域中交换数据

您可以使用在多核上运行多进程并行程序。共享内存将用于实现MPI消息传递

但是在这两种情况下,与多线程相比,编程负担更高,性能更低