加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 什么是“自然异步”或“纯异步”?

发布时间:2020-12-15 03:57:36 所属栏目:百科 来源:网络整理
导读:在关于C#的异步/等待的很多讨论中,我看到人们提到“自然异步”或“纯异步”这个术语.这些术语是什么意思? 什么是“自然异步”操作的一些例子,为什么它这样叫? 什么是“非自然异步”操作的一些例子,为什么? 解决方法 几乎总是I / O. 自然异步操作是不需要C
在关于C#的异步/等待的很多讨论中,我看到人们提到“自然异步”或“纯异步”这个术语.这些术语是什么意思?

什么是“自然异步”操作的一些例子,为什么它这样叫?

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

解决方法

几乎总是I / O.

自然异步操作是不需要CPU的操作,例如通过网络发送数据或从硬盘驱动器读取数据.它们不需要任何计算,因此CPU可以在运行时执行其他任务.

还有不需要线程的逻辑操作,例如等待超时到期,或等待同步结构(例如AsyncLock)

异步但不是自然异步的操作是在后台线程上执行的CPU操作.这些对于响应能力非常有用(例如对于UI应用程序),但由于仍然需要相同数量的资源,因此不会提高性能或可扩展性.

所以你有:

自然异步操作异步运行:

await Task.Delay(1000);

自然异步操作同步运行:

Thread.Sleep(1000);

自然同步运行异步运行:

await Task.Run(() => CalculateSquareRoot(5));

自然同步运行同步运行:

CalculateSquareRoot(5);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读