首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是“自然异步”还是“纯异步”?

什么是“自然异步”还是“纯异步”?
EN

Stack Overflow用户
提问于 2015-07-30 20:48:30
回答 1查看 649关注 0票数 10

在很多关于C的异步/等待的讨论中,我看到人们提到了“自然异步”或“纯异步”,这些术语到底意味着什么?

“自然异步”操作的一些例子是什么?为什么它被称为异步操作?

什么是“非自然异步”操作的例子,为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-30 21:03:33

几乎总是I/O。

当然,异步操作是不需要CPU的操作,比如通过网络发送数据或从硬盘读取数据。它们不需要任何计算,这样CPU就可以在运行时执行其他任务。

还有一些逻辑操作不需要线程,例如等待超时过期或等待同步构造(例如,AsyncLock)。

异步而非自然异步的操作是在后台线程上执行的CPU操作。这些对于响应性(例如UI应用程序)很有用,但不会提高性能或可伸缩性,因为它们仍然需要同样数量的资源。

所以你有:

自然异步操作异步运行:

代码语言:javascript
运行
复制
await Task.Delay(1000);

自然,异步操作同步运行:

代码语言:javascript
运行
复制
Thread.Sleep(1000);

自然同步操作异步运行:

代码语言:javascript
运行
复制
await Task.Run(() => CalculateSquareRoot(5));

自然同步操作同步运行:

代码语言:javascript
运行
复制
CalculateSquareRoot(5);
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31733734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档