Threaduri si functia la care fac call.
Last Updated: Jan 18 2017 13:40, Started by
keeekeeess
, Jan 17 2017 22:31
·
0
#1
Posted 17 January 2017 - 22:31
Salutare.
Am urmatorul cod care creeaza un thread: pthread_create(&threadsPool[i].idThread,NULL,&treat,(void*)arg);Voi avea functia void* treat(void * arg)care va rula pentru fiecare thread in parte, fara ca celelalte threaduri sa aiba acces la variabilele locale? Dar alte functii apelate de threaduri? De exemplu daca 2 threaduri apeleaza int altaFunctie() { int a 5; ++a; return a}voi avea return 6 tot timpul sau e posibil ca ambele sa incrementeze a si sa returneze 7? |
#2
Posted 18 January 2017 - 08:06
din ce stiu eu, le poti trata ca apeluri distincte. deci tot timpul rezultatul va fi 6.
|
#3
Posted 18 January 2017 - 13:40
int altaFunctie() { int a 5; ++a; return a} Fiecare thread va avea propria copie a functiei de mai sus pe stack cu variabilele locale unice pentru fiecare thread. Totusi, daca te-ai folosi de o variabila globala/statica in functia altaFunctie ai avea "probleme" cu valoarea de retur pentru ca s-ar calca pe degete thread-urile intre ele. Daca citesti si rulezi atent articolu asta: http://www.thegeekst.../?refcom  vei intelege perfect chestiile de baza cu thread-uri. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users