循環バッファーの使用#
循環バッファーは、パイプライン・フィルター間で渡される項目の割り当てと解放のオーバーヘッドを最小化するのに使用されることがあります。項目を作成する最初のフィルターとそれを消費する最後のフィルターが両方とも serial_in_order の場合、項目は少なくとも ntoken のサイズの循環バッファーを介して割り当ておよび解放できます。ここで、ntoken は parallel_pipeline の最初のパラメーターです。このような状況では、項目がまだ使用中であるか確認する必要はありません。
この仕組みが機能する理由は、同時に処理中の項目は最大で ntoken 個までであり、項目は割り当てられた順序で解放されるためです。したがって、循環バッファーが巻き戻って項目を再割り当てするまでに、その項目はパイプラインで解放されている必要があります。最初と最後のフィルターが serial_in_order でない場合は、バッファーが割り当てられた順序と同じ順序で解放されない可能性があるため、使用中のバッファーを追跡する必要があります。