【发布时间】:2019-05-28 10:39:18
【问题描述】:
在英文中,synchronous这个词的意思是"happening at the same time",而asynchronous这个词的意思正好相反(即"not simultaneous or concurrent in time : not synchronous")
为什么所有参考文献都将并行编程称为异步编程而不是同步编程like this one
以及为什么他们都使用关键字async(这是异步的缩写)而不是同步。
例如:
- 如果我有两个连续的方法
Method1()和Method2(),那么Method2()直到Method1()完成处理后才会开始执行,我们称之为顺序处理。 - 如果
Method1()和Method2()都标有async关键字,这意味着Method2()将开始处理而不等待Method1()完成。 - 因此,我可以将其描述为并行调用、并发调用、同步调用或任何表明它们无需等待即可一起运行的方式。
- 将第二个场景命名为异步给人的印象是它们没有并行处理。
这如果令人困惑,不是吗?
我不是以英语为母语的人,我是否缺少英语或并行编程概念的某些内容?
【问题讨论】:
-
这里,异步意味着没有同步性,即你开始一个操作,然后异步进行。
-
在并行编程(或多线程)中,线程彼此独立执行,并且可能在完全不同的时间完成它们的工作。它们彼此不同步或不同步,因此它们是异步的。同步在此上下文中的使用方式与异步不同。
-
在这种情况下,异步所指的“时间上不同步或不并发”并不是指独立的任务,它们实际上可能是同时执行的。它指的是异步子程序与其调用者的关系:子程序的结果与调用它的代码是“不同时或并发的”。
-
我们没有!您可以拥有不并行运行的异步代码。