タスクベースのプログラミングが適切ではない場合

タスク・スケジューラーの使用は、パフォーマンスの向上を目的としたスレッド化のアプローチとしては最も優れた方法ですが、内蔵のタスク・スケジューラーを使用することが適切でない場合もあります。タスク・スケジューラーは、非ブロックタスクで構成されるハイパフォーマンスなアルゴリズム用ですが、まれにタスクがブロックする場合でも動作します。ただし、スレッドが頻繁にブロックする場合、スレッドがブロックされている間は何も行えないため、タスク・スケジューラーを使用する際にパフォーマンス・ロスが発生します。ブロックは、長い間 I/O や mutex を待つことで発生します。1 つのスレッドが長い間 mutex を保持する場合、ほかに多くのスレッドがあったとしてもコードのパフォーマンスは向上しません。ブロックタスクがある場合は、必要な条件を備えたスレッドを使用すると良いでしょう。タスク・スケジューラーは、作成したスレッドとインテル® TBB のタスクを安全に混在使用できるように設計されています。