Os pipelines são um exemplo de processamento de fluxo. Depois que um pipeline é construído, o processamento participa de vários processos ao mesmo tempo - assim que os dados chegam a todos os processos. Imagine isto - existem três partes de dados - a b c
e dois processos - A
e B
. Agora observe estas etapas:
-
a@A B
-a
insereA
, não há nada emB
ainda -
b@A a@B
-a
é passado paraB
eb
insereA
-
c@A b@B
-c
chega aA
, enquantob
alcançaB
-
A c@B
- nada mais emA
ec
emB
Imagine a
, b
e c
são muito grandes. Tão grande apenas dois elementos podem estar presentes na máquina ao mesmo tempo. O processamento seqüencial exige processá-las primeiro em A
e, em seguida, em B
e armazená-las todas ao mesmo tempo. O processamento paralelo significa não apenas menores demandas de armazenamento, mas também envolve vários processadores - embora não necessariamente, já que o paralelismo pode ser simulado em um único processador pela alocação de tempo.
Cada etapa de um pipeline é um processo separado em execução em um subshell. Geralmente, há buffering na saída em processos específicos, o que significa que a saída é enviada em partes maiores. Isso otimiza as operações, mas pode ser desativado e, em seguida, a saída sai assim que estiver pronta. Mas mesmo com pedaços maiores ainda é paralelo.