关于多线程、并发和并行

About multithreading, concurrency, and parallelism

最近对多线程、并发、并行等概念的理解有些迷惑。为了减少混淆,我试着整理一下我对这些的理解并得出结论。我的问题是,

下面的结论是不是有什么误解或者错误?

可以找到我引用的参考文献here

1。并发和并行是不同级别的范畴。

既不是并发也不是并行。要么并发要么不并发,要么并行要么不并行
例如,

2。并行不是并发的子集。

3。线程化或多线程化与并发性和并行性有何关系?

线程的定义阐明了这一点。线程是“执行流的单位”。这种“执行流程”可以由调度程序独立管理,调度程序通常是操作系统的一部分。
并且,
并且,

4。多线程是并发还是并行?

详细描述将不胜感激。

Parallelism 指任何系统,其中单个应用程序可以利用比单个 CPU 所能提供的更多计算 硬件 。有许多不同类型的并行计算架构,但当人们说“并行”时,他们通常指的是其中一种...

...Symmetric MultiProcessing (SMP) 系统是一台具有一个内存系统和两个或更多具有同等访问权限的传统 CPU 的计算机。大多数现代工作站、大多数移动设备和许多服务器系统* 都是 SMP。

Multithreading is a model of concurrent computing.** 一位计算机科学家可能会告诉您,两个线程 运行 并发时,它们执行的操作交错的顺序并不是由程序本身严格确定的。软件开发人员更有可能说两个线程 运行 在两个线程都已启动且均未完成时相互并发。

在 SMP 系统上的 运行 应用程序中实现并行的一种方法是使用多个并发线程。


* 有些服务器是 NUMA,它是 SMP 的近亲。在 NUMA 系统中,CPU 都访问同一个内存系统,就像在 SMP 中一样,除了每个 CPU “拥有”物理内存的一部分 space,并且它可以访问它自己的内存位置比它访问其他 CPUs.

拥有的内存位置更快

** 还有其他并发计算模型。一些,例如 Actors,用于生产软件。其他的大多是学术兴趣。