2011-08-02 15 views
0

非同期プログラミングとの並列プログラミングの違いは?非同期プログラミングと比較した並列プログラミング

私は非同期プログラミングがバックグラウンドスレッド/ワーカーでの作業や、 がI/Oのように終わるのを待つことを知っています。

*並行してタスクを非同期のタスクとすることはできますか?

*非同期でタスクを並行して実行できますか?

私には分かりにくいビット。

上記の例はどれですか?

答えて

2

マルチスレッド、マルチプロセスおよび非同期プログラミングは、すべて1つのプログラムで一度に複数の処理を実行できる並行処理技術です。単一のプロセッサー/マシンしかない場合、これらのどれも真に「並列」ではありません。彼らはすべて、あなたが一緒に実行しているように感じるように、コードの実行をパイプライン化するだけです。

最初の2つは、CPUの切り替えタスクに依存しています。あなたは単純にコンピュータに何らかの形でこれを実行してもらいたいことを伝え、その後、さまざまなタスクに時間とその他のリソースを割り当てる方法を決定させることができます。ここでは、スレッドとプロセスの違いを詳しく説明します。

非同期プログラミングとは、アプリケーションがこれらのタスクの切り替えを制御することを意味します。あなたが読み書きしたい2つのI/Oチャンネルがある場合の例があります。あなたのアプリケーションは、データが利用可能になるまで1にデータを送信することができます。そうすると、2からデータを読み込み、1への送信を再開し、2へのデータ送信に切り替えます。考えられるのは、処理が必要なイベントがあるまで待ってから、イベントごとに切り替えます可用性とニーズ。ある意味では、これらの種類のアプリで手動でプロセススケジューリングを行っています。 1つの利点は、複数のプロセス/スレッドに関連するシステムオーバーヘッドが存在しないことです。多くの非同期ルーチンはselectシステムコールに依存しています。

関連する問題