【问题标题】:Why we refer to parallel programming as Asynchronous programming [duplicate]为什么我们将并行编程称为异步编程[重复]
【发布时间】: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() 完成。
  • 因此,我可以将其描述为并行调用、并发调用、同步调用或任何表明它们无需等待即可一起运行的方式。
  • 将第二个场景命名为异步给人的印象是它们没有并行处理。

这如果令人困惑,不是吗?

我不是以英语为母语的人,我是否缺少英语或并行编程概念的某些内容?

【问题讨论】:

  • 这里,异步意味着没有同步性,即你开始一个操作,然后异步进行
  • 在并行编程(或多线程)中,线程彼此独立执行,并且可能在完全不同的时间完成它们的工作。它们彼此不同步或不同步,因此它们是异步的。同步在此上下文中的使用方式与异步不同。
  • 在这种情况下,异步所指的“时间上不同步或不并发”并不是指独立的任务,它们实际上可能是同时执行的。它指的是异步子程序与其调用者的关系:子程序的结果与调用它的代码是“不同时或并发的”。
  • 我们没有!您可以拥有不并行运行的异步代码。

标签: asynchronous async-await


【解决方案1】:

并行编程意味着同时执行活动。今天,使用了两种活动:线程和异步过程(协程是一种特殊的异步过程)。这两种活动可以共存于同一个程序中。如果大多数或所有活动都是线程,则该程序称为多线程。如果大多数或所有活动都是异步过程,则该程序称为异步。如果程序由单个线程组成,则称为同步。但最有趣的是,当单线程执行异步程序时(例如,Java/Swing 或 Android 中的 GUI 线程),程序同时是异步的!

【讨论】:

  • 这更令人困惑:),请检查我添加到问题中的示例以澄清我最初困惑的根源
  • 并行并不意味着并发,就像并发并不意味着并行一样。
  • @PauloMorgado 其他人说“并行意味着并发”:medium.com/from-the-scratch/…
  • 他们错了。并发意味着在“同一”时间访问相同的资源。不访问相同资源的代码可以在没有并发的情况下并行运行。访问相同资源的代码可以同时运行。
猜你喜欢
  • 2015-07-10
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 2010-12-18
  • 1970-01-01
相关资源
最近更新 更多