jro*_*jro 5 parallel-processing concurrency multithreading process single-threaded
我读到可以在没有并发的情况下实现并行性。它是否正确?
假设您有两个任务 A 和 B,并且每个任务需要两个步骤才能完成:A1、A2、B1、B2。另外,进程是由线程组成的。
以下是我对并发和并行的看法:
顺序
Time ----->
Thread 1: A1 A2 B1 B2
Run Code Online (Sandbox Code Playgroud)
同时
Time ----->
Thread 1: A1 A2
Thread 2: B1 B2
Run Code Online (Sandbox Code Playgroud)
并行(和并发)
Time ----->
Thread 1: A1 A2
Thread 2: B1 B2
Run Code Online (Sandbox Code Playgroud)
如果这是正确的,那么没有并发性就不可能有并行性。
此外,如果此模型正确,您可能会得到以下结果:
顺序(和并发)
Time ----->
Thread 1: A1 B1
Thread 2: A2 B2
Run Code Online (Sandbox Code Playgroud)
这可能不是一个好主意,但在概念上似乎是可能的。
来自维基百科
\n\n\n\n\n并行计算与并发计算密切相关\xe2\x80\x94它们经常一起使用,并且经常被混为一谈,尽管两者是不同的:可以有并行而没有并发(例如位级并行),也可以有并发而没有并行(例如在单核CPU上通过分时进行多任务处理)。在并行计算中,计算任务通常被分解为几个(通常是许多)非常相似的子任务,这些子任务可以独立处理,并且在完成后将其结果组合起来。相比之下,在并发计算中,各个进程通常不处理相关的任务;当它们这样做时,就像分布式计算中的典型情况一样,单独的任务可能具有不同的性质,并且在执行期间通常需要一些进程间通信。
\n
使用该解释作为指导,我认为您的评估是准确的,但它缺少没有并发性的并行性,这在上面的引用中提到。
\n