2

マルチスレッドの基本的な目的を理解しています。また、同時実行を実現するために、非同期プログラミングモデル、BackgroundWorkerComponentを使用したり、単に別のスレッドでタスクを呼び出したりできることも知っています。しかし、並行性を実現するこれら3つの方法の基本的な違いはわかりません。誰でも私にそれを明確にしてください。前もって感謝します。

4

1 に答える 1

1

非同期プログラミングモデルまたはBackgroundWorkerコンポーネントを使用して、2つの異なるモデル(API)を使用して、スレッドプールスレッドでコードを実行しています。

BackgroundWorkerのモデルはかなり単純ですが、特定のタイプのタスクに適しています。BackgroundWorkerは、(廃止された)イベントベースの非同期パターン(EAP)に従います。タスクがBackgroundWorkerに最適でない限り、通常はAPMを使用します。

スレッドプールを使用すると、スレッドを作成するための特定のオーバーヘッド(スレッドのスタックスペースの割り当てなど)があるため、有利な場合があります。

独自にスレッドを作成する場合、スレッドプールスレッドを使用していません(適切なAPIを呼び出してスレッドにアクセスする場合を除く)。したがって、スレッドを作成するためのコストを支払います。スレッドがかなり長時間実行されている場合、コストはスレッドの存続期間にわたって償却され、制限されたスレッドプールスレッドの1つを消費していないため、これは合理的な方法です。

私はあなたの質問が言及していなかったことを指摘します

タスクベースの非同期パターン(TAP)

http://msdn.microsoft.com/en-us/library/hh873175.aspx

これは、すべての新しい開発に推奨されます。

于 2012-12-13T20:00:28.413 に答える