1. ホーム
  2. python

[解決済み] スレッド vs. 非同期

2023-01-27 14:47:42

質問

私はプログラミングのスレッドモデルと非同期モデルについて、このとても良い記事から読み解きました。 http://krondo.com/blog/?p=1209

しかし、この記事では次のような点に触れています。

  1. 非同期プログラムは、I/Oがあるたびにタスクを切り替えることによって、単純に同期プログラムを凌駕する。
  2. スレッドはオペレーティングシステムによって管理されます。

スレッドは OS によって、Ready-Queue と Waiting-Queue (他のキューの間) の TCB を移動することによって管理されると読んだ覚えがあるのですが。この場合、スレッドは待ち時間を無駄にしないのでしょうか?

以上のことから、スレッドプログラムに対する非同期プログラムの利点は何でしょうか?

どのように解決するのですか?

  1. スレッドセーフなコードを書くことは非常に困難です。非同期コードでは、コードが 1 つのタスクから次のタスクに移行する場所を正確に知っており、したがってレース コンディションははるかに困難です。
  2. スレッドは、各スレッドが独自のスタックを持つ必要があるため、かなりの量のデータを消費します。非同期コードでは、すべてのコードが同じスタックを共有し、タスク間で継続的にスタックを巻き戻すため、スタックは小さく保たれます。
  3. スレッドは OS の構造体であるため、プラットフォームがサポートするメモリが多くなります。非同期タスクではそのような問題はありません。