[résolu] Multithreading et procedures...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

[résolu] Multithreading et procedures...

Message 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 ? Image
Dernière modification par Fig le sam. 15/mars/2014 17:01, modifié 1 fois.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Multithreading et procedures...

Message 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 )
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Multithreading et procedures...

Message par G-Rom »

Elle se dédouble :mrgreen: T'en appelle une, y en a 8 qui se lance sur un proc 8 coeurs :mrgreen:
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.
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

Re: Multithreading et procedures...

Message 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 ? Image
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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Multithreading et procedures...

Message par Backup »

ha .. bah je viens d'apprendre un truc là ... 8O

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

....
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Multithreading et procedures...

Message 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)
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Répondre