线程vs并行,它们有什么不同?

线程和并行性有什么区别?

哪一个比另一个有优势?


Daniel Moth(我的前任同事) - 线程/并发vs并行性文章解释了这一切。

引:

为了利用我们软件中的多个内核,最终必须使用线程。 由于这个事实,一些开发人员陷入了将多线程等同于并行的陷阱。 这并不准确......您可以在单个核心机器上进行多线程处理,但只能在多核心机器上进行并行处理

快速测试:如果在单个核心机器上使用线程,并且对于您的场景非常有意义,那么您并不是“在执行并行性”,而只是在执行多线程。


并行性是使用多条指令流来完成计算的通用技术。 所有平行技术的关键方面是在流程之间进行沟通以协作最终答案。

线程化是并行性的一个具体实现。 每条指令流都有自己的堆栈以保存局部变量和函数调用的记录,并通过共享内存隐式地与其他流进行通信。

一个示例可能是让一个线程简单地排队磁盘请求并将其传递给工作线程,从而有效地将磁盘和CPU并行化。 传统的UNIX管道方法是将它们分成两个完整的程序,在命令中说“cat”和grep:

cat /var/log/Xorg.0.log | grep "EE"

线程可以想象地降低将磁盘I / O从cat进程复制到grep进程的通信成本。


线程是一种技术,并行是一种可以使用线程来实现的范例(但在多处理器上使用单线程就可以轻松完成)

链接地址: http://www.djcxy.com/p/79307.html

上一篇: Threading vs Parallelism, how do they differ?

下一篇: Parallel programming with threads in Java