Salut
Am mai lucrat cu multiprocess prin facultate, si de atunci pe ici pe
colo, treaba e simpla: fork() * n, n copii ale datelor, wait() &
friends, toata lumea fericita.
Insa (mai nou ... sau mai vechi, ca e de multi ani), thread-urile au un
overhead mult mai mic decat procesele, dar din cate am inteles lucreaza
cu acelasi set de date, ceea ce nu e bine, pentru ca pe mine ma
intereseaza sa execut in paralel aceeasi bucata de cod dar pentru mai
multe seturi de date.
Practic ma intereseaza sa paralelizez ceva de genul:
operatii_de_inceput();
for(i = 0; i <= N; i++)
operatii_in_paralel(i); <<<< paralelizare
operatii_de_final();
in cazul meu operatiile de final (daca exista) nu se bazeaza pe cele in
paralel (decat cel mult niste coduri de ok / eroare), astfel incat cu
procese le-as putea scoate usor, dar daca se poate cu thread-uri si e
mai performant ... de ce nu ?
problema la care nu-i dau de cap (cel mai probabil pentru ca nu am
inteles inca prea bine cum functioneaza threadurile) este cum fac o
copie locala a unei variabile, astfel incat variabila respectiva sa aiba
valorea doar pentru threadul respectiv, in alt thread putand avea o alta
valoare, iar o asignare a acelei variabile intr-un thread sa nu
influenteze valoarea aceleiasi variabile dintr-un altul
rezumand, in principiu ma intereseaza daca se poate face exact acelasi
lucru ce as putea sa fac cu multiproces ('copie' a datelor), dar
folosind threaduri (cel putin unele variabile sa fie 'locale' threadului)
Mersi
Alex
_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug