在很多关于C的异步/等待的讨论中,我看到人们提到了“自然异步”或“纯异步”,这些术语到底意味着什么?
“自然异步”操作的一些例子是什么?为什么它被称为异步操作?
什么是“非自然异步”操作的例子,为什么?
发布于 2015-07-30 21:03:33
几乎总是I/O。
当然,异步操作是不需要CPU的操作,比如通过网络发送数据或从硬盘读取数据。它们不需要任何计算,这样CPU就可以在运行时执行其他任务。
还有一些逻辑操作不需要线程,例如等待超时过期或等待同步构造(例如,AsyncLock)。
异步而非自然异步的操作是在后台线程上执行的CPU操作。这些对于响应性(例如UI应用程序)很有用,但不会提高性能或可伸缩性,因为它们仍然需要同样数量的资源。
所以你有:
自然异步操作异步运行:
await Task.Delay(1000);自然,异步操作同步运行:
Thread.Sleep(1000);自然同步操作异步运行:
await Task.Run(() => CalculateSquareRoot(5));自然同步操作同步运行:
CalculateSquareRoot(5);https://stackoverflow.com/questions/31733734
复制相似问题