【问题标题】:Can there be multithreading without asynchronicity?可以有没有异步的多线程吗?
【发布时间】:2021-01-31 17:51:40
【问题描述】:

我知道没有多线程(例如,一些与 I/O 相关的任务)可能会出现异步。但它可以反过来吗? 例如这段代码(主线程创建一个新线程来做一些工作,然后等到它完成):

var thread = new Thread(() => DoSomethig());
thread.Start();
thread.Join();

它是异步的吗?或者它应该使用一些异步模式(例如基于事件的)以便我们可以这样称呼它?我知道这没用,我的问题是关于术语的。

【问题讨论】:

    标签: multithreading asynchronous terminology


    【解决方案1】:

    您启动一个线程,它会异步运行它。但是您立即在主线程上调用join,因此您在其上进行了大量同步。如此之多,以至于可以将其称为等效于在单个执行线程上同步运行。

    我可以看到将这段代码称为异步或同步的情况(尤其取决于调用的实现,例如 join),但老实说,这只是术语 - 我不会担心。

    异步/同步只是描述软件行为的有用概念。他们不应该以相互排斥的方式解释每一段代码。

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2021-05-18
      • 1970-01-01
      相关资源
      最近更新 更多