5

私はこの質問を読みましたAsynchronous vs Multithreading-is there a differenceと Google で違いについて検索します。

マルチスレッドの代わりに非同期を使用する利点は何ですか? マルチスレッドの代わりに非同期を使用するのはいつですか?

4

1 に答える 1

3

非同期プログラミングを使用してタスクを実行できる場合は、マルチスレッド プログラミングを使用するのではなく、その方法で実行することをお勧めします。3 つの理由から:-

1: パフォーマンス

マルチスレッドでは、CPU または w/e はスレッド間の切り替えを維持する必要があります。したがって、スレッドが何もせず、ただそこに座っている場合でも (または、条件が true であるかどうかを比較して、作成された w/e を使用して取得できるようにする可能性が高い)、CPU は引き続き切り替わります。スレッドとプロセスには時間がかかります。悪くはないと思いますが、あなたのパフォーマンスは確実に打撃を受けます。

2: シンプルさと簡潔さ

また、それは私だけかもしれませんが、非同期プログラミングは私にとってより自然に思えます。質問する前に、いいえ、私は JS のファンではありませんが、それでもまだです。それだけでなく、共有変数やスレッド セーフなどの問題に遭遇します。これらはすべて、非同期プログラミングとコールバックを使用することで回避できます。

3: 面倒なスレッドの実装

Python には、GIL (Global Interpreter Lock) と呼ばれる本当に恐ろしいものがあります。基本的に、Python では実際に並行スレッドを実行することはできません。また、マルチコア CPU でスレッド化されたプログラムを実行することを考えている場合は、忘れてください。

C# にも注意点があるかもしれませんが、わかりません。これらは私の 2 セントです...


そうは言っても、非同期とマルチスレッドは実際にはそれほど比較できません。マルチスレッドは非同期性を実装するために (非効率的に) 使用される場合がありますが、これは同時実行性を実現する方法であり、非同期性は OOP (オブジェクト指向プログラミング) のようなプログラミング スタイルです。

于 2013-03-17T11:00:13.320 に答える