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

c# – 异步与多线程

发布时间:2020-12-15 05:37:15 所属栏目:百科 来源:网络整理
导读:我读了这个问题 Asynchronous vs Multithreading- is there a difference并在谷歌搜索差异. 使用异步而不是多线程有什么好处? 什么时候使用异步而不是多线程? 解决方法 如果您的任务可以使用异步编程完成,那么最好以这种方式执行,而不是进行多线程编程.有
我读了这个问题 Asynchronous vs Multithreading- is there a difference并在谷歌搜索差异.

使用异步而不是多线程有什么好处?
什么时候使用异步而不是多线程?

解决方法

如果您的任务可以使用异步编程完成,那么最好以这种方式执行,而不是进行多线程编程.有三个原因: –

1:性能

在多线程中,CPU或w / e必须在线程之间保持切换.所以,即使你的线程什么都不做而只是坐在那里(或者更可能的是,进行比较以查看某个条件是否为真所以它可以得到一个用w / e来创建它),CPU仍然会切换线程和进程需要一些时间.我认为这不会很糟糕,但你的表现肯定会受到打击.

2:简单性和简短

也许,这可能只是我,但异步编程对我来说似乎更自然.在你问之前,不,我不是JS的粉丝,但仍然.不仅如此,您还遇到了共享变量和线程安全性等问题 – 所有这些问题都可以通过使用异步编程和回调来实现.

3:恼人的线程实现

在Python中有一个非常可怕的东西叫做GIL(全球翻译锁).基本上,Python不允许您实际运行并发线程.另外,如果您正考虑在多核CPU上运行线程程序,请忘掉它.

我也不知道C#中可能会有一些警告.这些只是我的2美分……

总而言之,异步和多线程实际上并不具有可比性.虽然可以使用多线程(低效率)来实现异步,但它是一种获得并发性的方法,而acynhrounousity是一种编程风格,如OOP(面向对象编程).

(编辑:李大同)

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

    推荐文章
      热点阅读