[so] [Tema2][Windows] Parametru CreatePipe
Costin Lupu
costin.lup at gmail.com
Mon Apr 3 11:24:03 EEST 2017
On Mon, 2017-04-03 at 10:48 +0300, Theodor Stoican wrote:
> Pe 3 aprilie 2017, 10:01, Costin Lupu <costin.lup at gmail.com> a scris:
> On Mon, 2017-04-03 at 09:42 +0300, Theodor Stoican via so
> wrote:
> > Salut,
> >
> >
> >
> > > Aici e o problemă. Subcomenzile a, b și c *trebuie* să
> ruleze în
> > > paralel. De altfel ne putem gândi la operatorul '|' ca la
> un operator de
> > > paralelizare, cu diferența că subcomenzile comunică între
> ele
> >
> >
> > Se vrea acest comportament doar pentru comenzile externe? Nu
> vad cum
> > ai putea respecta acest comportament pentru cd, fara sa
> deschizi
> > thread-uri.
>
> Fix ca în cazul operatorului de paralelizare, și pentru
> operatorul pipe
> procesele pornesc în paralel și se pot termina în orice
> ordine. Nu ai
> nevoie de thread-uri. Nu înțeleg de unde vine nelămurirea ta,
> mai am
> nevoie de niște clarificări în sensul ăsta.
>
> Ia spre exemplu comanda: 'cd | echo foo'. Subcomanda 'echo
> foo' nici
> măcar nu citește de la stdin.
>
> Nu inteleg cum poti lansa cele 2 procese in paralel fara sa pornesti
> threaduri.
Păi și thread-urile alea nu tot secvențial le pornești?
> Singura varianta pe care o vad e sa transformi functia intr-un
> executabil si sa i-l dai ca parametru lui CreateProcess. Altfel
> parcurgerea arborelui e inerent secventiala. Imi scapa ceva?
Cred că tu te gândești să pornești procesele fix în același timp. Ori
asta ar fi posibil doar pe sistemele multiprocesor și doar dacă
kernel-ul ți-ar furniza un astfel de syscall (de care eu n-am auzit).
Ori mini-shell-ul (ca și bash-ul) pornește comenzi în paralel indiferent
de numărul de procesoare de pe sistem.
Costin
More information about the so
mailing list