并发是让两个任务在不同的线程上并行运行。然而,异步方法是并行运行的,但在同一个线程上。这是如何实现的?另外,并行性又如何呢?
这三个概念之间有什么区别?
发布于 2014-03-15 03:45:08
每个人都很难将异步与并行或并发联系起来,因为异步并不是并行或并发的反义词。它是同步的反义词。它只是指示某些东西,在这种情况下是线程,是否会与其他东西同步,在这种情况下是另一个线程。
发布于 2019-12-17 16:40:10
“同步和异步是编程模型。并发和并行是执行任务的方式...”。来源:https://medium.com/better-programming/sync-vs-async-vs-concurrent-vs-parallel-5754cdb60f66
换句话说,sync和async描述程序在调用函数时如何执行(它将等待还是继续执行?),而并发和并行描述函数(任务)将如何执行(并发=可能同时执行,并行=同时有效执行)。
发布于 2021-09-13 22:11:53
用类比来解释这些术语。
你的房子需要洗碗和洗衣服。
并发性:您不必等到一个完成后再开始另一个。例如,你可以先开始上菜,也可以同时上菜。它们可以按任何顺序结束,也就是说,即使你先开始洗碗,也可能先洗好衣服。
并行性:房子里不止一个人在做这项工作;举个例子,你可以洗碗,另一个人可以洗衣服。
异步:你让别人洗衣服,然后让别人洗碗。他们实际上可以是同一个人(例如,你告诉他们洗衣服,然后立即告诉他们洗碗)。他们完成每一个任务后都会向你汇报。
同步:你让某人洗碗。你等着他们。当他们完成后,你可以做其他的事情(你可以告诉他们下一步去洗衣服,或者你可以自己做,或者你可以完全做其他的事情;关键是你在第一个任务完成时受阻,你和他们是同步的)。
https://stackoverflow.com/questions/4844637
复制相似问题