循環バッファーの使用

循環バッファーは、パイプラインのフィルター間で渡されるアイテムの割り当てと解放のオーバーヘッドを最小限にするために使用されることがあります。アイテムを作成する最初のフィルターとアイテムを消費する最後のフィルターがどちらも serial_in_order の場合、アイテムはサイズ ntoken の循環バッファーを使用して割り当ておよび解放できます (ntokenparallel_pipeline の第 1 引数)。この条件の下では、アイテムが使用されているかどうかを確認する必要はありません。

この処理で使用されるアイテムは最大 ntoken アイテムで、各アイテムは割り当てられた順序で解放されます。したがって、循環バッファーがアイテムを再度割り当てるために巡回する時点で、そのアイテムはパイプラインの前の処理から解放されています。つまり、アイテムが使用されているかどうかを確認する必要はありません。最初と最後のフィルターが serial_in_order でない 場合、バッファーは割り当てられた順序と同じ順序でリタイアしないため、どのバッファーが使用中か追跡する必要があります。