<分区>
我读了这个问题 Asynchronous vs Multithreading- is there a difference并在 Google 中搜索差异。
使用异步而不是多线程有什么好处? 什么时候使用异步而不是多线程?
标签 c# asynchronous
<分区>
我读了这个问题 Asynchronous vs Multithreading- is there a difference并在 Google 中搜索差异。
使用异步而不是多线程有什么好处? 什么时候使用异步而不是多线程?
最佳答案
如果您的任务可以使用异步编程来完成,那么最好采用异步编程而不是多线程编程。出于 3 个原因:-
在多线程中,CPU 或 w/e 必须不断地在线程之间切换。因此,即使您的线程什么也不做,只是坐在那里(或者更有可能,进行比较以查看条件是否为真,以便它可以通过创建它来执行),CPU 仍然会切换线程和进程需要一些时间。我不认为那会很糟糕,但你的表现肯定会受到影响。
另外,也许只有我一个人觉得异步编程对我来说似乎更自然。在你问之前,不,我不是 JS 的粉丝,但仍然是。不仅如此,您还会遇到共享变量和线程安全等方面的问题——所有这些问题都可以通过使用异步编程和回调来回避。
在 Python 中,有一个非常可怕的东西叫做 GIL(全局解释器锁)。基本上,Python 不允许您实际运行并发线程。此外,如果您正在考虑在多核 CPU 上运行线程程序,那就算了。
C# 中可能也有警告,我不知道。这些只是我的 2 美分...
话虽这么说,异步和多线程真的没那么可比。虽然可以使用多线程(效率低下)来实现异步,但它是获得并发的一种方式,而异步是一种编程风格,例如 OOP(面向对象编程)。
关于c# - 异步与多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15459887/