パイプライン処理
パイプライン処理を行う場合にも、複数の命令同士が持つ依存関係から命令の投入を中断せざるを得ない状況が生じうるが、これをパイプラインハザードと呼ぶ。ハザードが発生すると処理速度の低下に繋がる。
ソフトウェアに、パイプライン的な処理のパターンがある。スレッドを使うパターンに見られる。
一般に、オブジェクト指向の場合、情報が発生する側から情報を受け取る側に情報を渡すときは、Observer パターンを使う。パイプライン処理をオブジェクト指向で実装する場合も、普通のメソッド呼び出しではなく、Observer パターンで前のスレッドからデータを受け取り、受け取った側のスレッドでキューにデータをためる、というのが基本形の実装方法である。
前のスレッドと後ろのスレッドでスレッドの競合を避けるために、キューにロックをかけてからキューの読み書きをするのではなく、Lock-freeなキューを使って、ロックをかけずに、キューの読み書きをすることも多い。