Page 1 sur 1
[résolu] Multithreading et procedures...
Publié : sam. 15/mars/2014 13:18
par Fig
Bonjour,
J'avais une question, avant de transformer certaines de mes procédures en multithreading:
Quand une procédure mutithreadée appelle une procédure classique, comment cela se passe t il ?
La procédure classique devient multithreadé aussi, elle se dédouble ?

Re: Multithreading et procedures...
Publié : sam. 15/mars/2014 13:46
par Backup
a mon avis non !
faudrait, faire gaffe que plusieurs procedures Multithreadées , ne fassent pas appel en meme temps
a ta procedure standard .. c'est pourquoi il existe les fonctions de Flag (Mutex )
Re: Multithreading et procedures...
Publié : sam. 15/mars/2014 13:56
par G-Rom
Elle se dédouble

T'en appelle une, y en a 8 qui se lance sur un proc 8 coeurs
Ton programme principale peu être considéré comme un thread , ses instructions seront exécuté à intervalle régulier défini par le système d'expoitation , l'os repartit son temps entre tout les programmes.
Ton programme peu avoir des threads "enfant" ils sont donc exécuté en parallèle de ton programme , le processeur va donc alloué du temps à ton programme principal , et à son thread enfants , ce qui donne l'impression d'aller plus vite, car "2x" plus de temps est attribuer à ton programme.
Un thread peu être vu comme un "univers" , tout ce qui est créer & appeler à l'intérieur de cet univers, appartient à l'univers.
Tu peu donc appeler la même procédure dans différent thread sans que cela pose problème. Le soucis va être l'accès au ressources qu'ils partage, les mutex & les sémaphore sont là pour cela.
Re: Multithreading et procedures...
Publié : sam. 15/mars/2014 14:56
par Fred
Fig a écrit :Bonjour,
J'avais une question, avant de transformer certaines de mes procédures en multithreading:
Quand une procédure mutithreadée appelle une procédure classique, comment cela se passe t il ?
La procédure classique devient multithreadé aussi, elle se dédouble ?

Oui, elle se "dédouble", chaque thread execute la meme procedure (qui a son propre contexte). Par contre, si ta procedure modifie des variables/tableaux/maps globaux, là ca va coincer et il faudra synchroniser les accès.
Re: Multithreading et procedures...
Publié : sam. 15/mars/2014 16:14
par Backup
ha .. bah je viens d'apprendre un truc là ...
j'imaginais qu'un procedure "normal" avait une adresse bien defini dans la ram
et qu'un appel par Thread , ou normal executait un Call vers cette adresse precise
et que donc, si plusieurs Call pouvait faire sauter le Pointeur de prg sur la meme adresse de procedure
ça occasionnerai un probleme d'acces .. voir un probleme de Pile
sauf si effectivement chaque thread a sa propre pile
....
Re: Multithreading et procedures...
Publié : sam. 15/mars/2014 16:59
par Fig
Pour les accès aux ressources partagés, ça ne sera pas un problème.
Le peu de thread différent que j'avais exécuté jusqu’à maintenant se suffisaient à eux même et n'appelaient pas de proc externes.
Ca n'était pas une évidence pour moi que chaque thread pouvait appeler une procédure du même nom.
C'est clair maintenant, merci, ça m'aura évité de faire des tests là dessus. (Fainéant Inside)