没有异步性能有多线程吗?
Can there be multithreading without asynchronicity?
我知道在没有多线程的情况下可能存在异步性(例如某些 I/O-related 任务)。但反过来有可能吗?
例如,这段代码(主线程创建一个新线程来做一些工作并等待它完成):
var thread = new Thread(() => DoSomethig());
thread.Start();
thread.Join();
它是异步的吗?或者它应该使用某种异步模式(例如,基于事件的模式)以便我们可以这样称呼它?虽然我知道它没用,但我的问题是关于术语的。
你启动一个线程,它异步运行它。但是您立即在主线程上对其调用 join
,因此您会对其进行大量同步。如此之多,以至于人们可以称其等同于在单个执行线程上同步 运行。
我可以看到将这段代码称为异步或同步的情况(尤其取决于 join
等调用的实现),但老实说,这只是术语 - 我不会担心。
Async/sync 只是描述软件行为的有用概念。他们不应该以相互排斥的方式解释每一段代码。
我知道在没有多线程的情况下可能存在异步性(例如某些 I/O-related 任务)。但反过来有可能吗? 例如,这段代码(主线程创建一个新线程来做一些工作并等待它完成):
var thread = new Thread(() => DoSomethig());
thread.Start();
thread.Join();
它是异步的吗?或者它应该使用某种异步模式(例如,基于事件的模式)以便我们可以这样称呼它?虽然我知道它没用,但我的问题是关于术语的。
你启动一个线程,它异步运行它。但是您立即在主线程上对其调用 join
,因此您会对其进行大量同步。如此之多,以至于人们可以称其等同于在单个执行线程上同步 运行。
我可以看到将这段代码称为异步或同步的情况(尤其取决于 join
等调用的实现),但老实说,这只是术语 - 我不会担心。
Async/sync 只是描述软件行为的有用概念。他们不应该以相互排斥的方式解释每一段代码。