5

我读了这个问题Asynchronous vs Multithreading-is there a difference并在 Google 中搜索差异。

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

4

1 回答 1

3

如果您的任务可以使用异步编程来完成,那么最好这样做,而不是进行多线程编程。有3个原因:-

1:性能

在多线程中,CPU 或 w/e 必须不断在线程之间切换。所以,即使你的线程什么都不做,只是坐在那里(或者更有可能,做一个比较以查看一个条件是否为真,以便它可以与它被创建的 w/e 一起做),CPU 仍然会切换线程和过程需要一些时间。我不认为那会很糟糕,但你的表现肯定会受到打击。

2:简单和简洁

另外,也许只有我一个人,但异步编程对我来说似乎更自然。在你问之前,不,我不是 JS 的粉丝,但仍然。不仅如此,您还会遇到共享变量和线程安全等问题——所有这些都可以通过使用异步编程和回调来规避。

3:烦人的线程实现

在 Python 中有一个非常可怕的东西,叫做 GIL(全局解释器锁)。基本上,Python 不允许您实际运行并发线程。此外,如果您正在考虑在多核 CPU 上运行线程程序,请忘记它。

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


尽管如此,异步和多线程确实没有那么可比性。虽然可以使用多线程(效率低下)来实现异步,但它是一种获得并发性的方法,而异步是一种编程风格,如 OOP(面向对象编程)。

于 2013-03-17T11:00:13.320 回答