【问题标题】:Is asynchronous a kind of concurrency异步是并发的一种吗
【发布时间】:2016-11-17 11:26:18
【问题描述】:

我已经知道调用异步方法时,例如myAsync(),调用者例如Caller() 可以继续执行而无需等待它完成。但另一方面,myAsync() 也在执行。

public void Caller(){              
    myAsync();---------------------running
    dosometing();------------------running
}

Caller()myAsync() 旁边的代码将与myAsync() 同时执行。那么这种情况能不能算是一种并发呢?


更新

我更喜欢使用 javascript 和 c#

【问题讨论】:

标签: asynchronous concurrency


【解决方案1】:

这在很大程度上取决于您的编程语言的并发模型

如果您的语言允许您定义“隐式”并行运行的方法;那么当然,调用 myAsync() 将使用某种“并发机制”(例如线程)来执行该方法应该执行的任何操作。

从这个意义上说,您的问题的答案是肯定的。但可能需要指出的是,许多“通用”编程语言(例如 Java)只有在 myAsync() 将创建一些线程然后运行“某物" 使用那个线程。

【讨论】:

  • 谢谢你的回答:),有没有什么方法可以在不并发或不创建新线程的情况下调用异步方法
  • 我知道你的意思使用该线程运行“某事”。某些东西将是 myAsync() 的回调,对吗?在 C# 中是这样。 @鬼猫
  • 不,我的意思是 myAsync() 可以启动一个线程......并给该线程一些方法/回调来运行。同样:您的代码示例只是调用一个方法。至少在 Java invoking 中,一个方法总是发生在同一个线程上……但也许该方法本身会触发一个新线程,并指示该线程做某事。
  • 我只看到link。似乎 C# 会将 dosomething() 重写为一个回调,该回调将在使用 myAsync() 创建的线程完成 myAsync() 时调用。 @鬼猫
  • 再次阅读你的答案,我想我现在明白你的意思了:) 你的 something 是 myAsync() 中的东西,而不是 dosomething() 方法:( @GhostCat
猜你喜欢
  • 2011-12-01
  • 1970-01-01
  • 2019-11-30
  • 2019-08-19
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 2016-02-12
  • 2017-10-17
相关资源
最近更新 更多