关于多线程、并发和并行
About multithreading, concurrency, and parallelism
最近对多线程、并发、并行等概念的理解有些迷惑。为了减少混淆,我试着整理一下我对这些的理解并得出结论。我的问题是,
下面的结论是不是有什么误解或者错误?
可以找到我引用的参考文献here。
1。并发和并行是不同级别的范畴。
既不是并发也不是并行。要么并发要么不并发,要么并行要么不并行
例如,
- 非并发(顺序)/非并行
- 非并发(顺序)/并行
- 并发/非并行
- 并发/并行
2。并行不是并发的子集。
3。线程化或多线程化与并发性和并行性有何关系?
线程的定义阐明了这一点。线程是“执行流的单位”。这种“执行流程”可以由调度程序独立管理,调度程序通常是操作系统的一部分。
- 拥有一个线程意味着拥有一个执行流单元。
- 拥有多个线程(Multithreading)意味着拥有多个执行流单元。
并且,
- 有多个执行流单元是有多个事情在进步,这是并发的定义。
并且,
- 多单元执行流程在单核硬件环境下通过时间分片完成。
- 多个执行流程单元在多核硬件环境中并行完成。
4。多线程是并发还是并行?
- 多线程,或具有多个执行流单元,是并发的。
- 多线程本身只是具有多个执行流单元。这与并行度无关。
- 操作系统如何处理多个执行流单元与并行性有关。
- 并行是通过操作系统和硬件环境来实现的。
- “代码可以并发,但不能并行。” (Parallelism implies concurrency but not the other way round right?, stackexchange)
详细描述将不胜感激。
Parallelism 指任何系统,其中单个应用程序可以利用比单个 CPU 所能提供的更多计算 硬件 。有许多不同类型的并行计算架构,但当人们说“并行”时,他们通常指的是其中一种...
...Symmetric MultiProcessing (SMP) 系统是一台具有一个内存系统和两个或更多具有同等访问权限的传统 CPU 的计算机。大多数现代工作站、大多数移动设备和许多服务器系统* 都是 SMP。
Multithreading is a model of concurrent computing.** 一位计算机科学家可能会告诉您,两个线程 运行 并发时,它们执行的操作交错的顺序并不是由程序本身严格确定的。软件开发人员更有可能说两个线程 运行 在两个线程都已启动且均未完成时相互并发。
在 SMP 系统上的 运行 应用程序中实现并行的一种方法是使用多个并发线程。
* 有些服务器是 NUMA,它是 SMP 的近亲。在 NUMA 系统中,CPU 都访问同一个内存系统,就像在 SMP 中一样,除了每个 CPU “拥有”物理内存的一部分 space,并且它可以访问它自己的内存位置比它访问其他 CPUs.
拥有的内存位置更快
** 还有其他并发计算模型。一些,例如 Actors,用于生产软件。其他的大多是学术兴趣。
最近对多线程、并发、并行等概念的理解有些迷惑。为了减少混淆,我试着整理一下我对这些的理解并得出结论。我的问题是,
下面的结论是不是有什么误解或者错误?
可以找到我引用的参考文献here。
1。并发和并行是不同级别的范畴。
既不是并发也不是并行。要么并发要么不并发,要么并行要么不并行
例如,
- 非并发(顺序)/非并行
- 非并发(顺序)/并行
- 并发/非并行
- 并发/并行
2。并行不是并发的子集。
3。线程化或多线程化与并发性和并行性有何关系?
线程的定义阐明了这一点。线程是“执行流的单位”。这种“执行流程”可以由调度程序独立管理,调度程序通常是操作系统的一部分。
- 拥有一个线程意味着拥有一个执行流单元。
- 拥有多个线程(Multithreading)意味着拥有多个执行流单元。
并且,
- 有多个执行流单元是有多个事情在进步,这是并发的定义。
并且,
- 多单元执行流程在单核硬件环境下通过时间分片完成。
- 多个执行流程单元在多核硬件环境中并行完成。
4。多线程是并发还是并行?
- 多线程,或具有多个执行流单元,是并发的。
- 多线程本身只是具有多个执行流单元。这与并行度无关。
- 操作系统如何处理多个执行流单元与并行性有关。
- 并行是通过操作系统和硬件环境来实现的。
- “代码可以并发,但不能并行。” (Parallelism implies concurrency but not the other way round right?, stackexchange)
详细描述将不胜感激。
Parallelism 指任何系统,其中单个应用程序可以利用比单个 CPU 所能提供的更多计算 硬件 。有许多不同类型的并行计算架构,但当人们说“并行”时,他们通常指的是其中一种...
...Symmetric MultiProcessing (SMP) 系统是一台具有一个内存系统和两个或更多具有同等访问权限的传统 CPU 的计算机。大多数现代工作站、大多数移动设备和许多服务器系统* 都是 SMP。
Multithreading is a model of concurrent computing.** 一位计算机科学家可能会告诉您,两个线程 运行 并发时,它们执行的操作交错的顺序并不是由程序本身严格确定的。软件开发人员更有可能说两个线程 运行 在两个线程都已启动且均未完成时相互并发。
在 SMP 系统上的 运行 应用程序中实现并行的一种方法是使用多个并发线程。
* 有些服务器是 NUMA,它是 SMP 的近亲。在 NUMA 系统中,CPU 都访问同一个内存系统,就像在 SMP 中一样,除了每个 CPU “拥有”物理内存的一部分 space,并且它可以访问它自己的内存位置比它访问其他 CPUs.
拥有的内存位置更快** 还有其他并发计算模型。一些,例如 Actors,用于生产软件。其他的大多是学术兴趣。