Appel de procedure dans une thread : conséquence ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Appel de procedure dans une thread : conséquence ?

Message par olivier »

J'appel des procedures à partir d'une thread.

Est ce dangereux ? Ou cela ne pose aucun problème ?
Vive le temps libre !
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

No pb... :D
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
LavaLava
Messages : 173
Inscription : dim. 28/mars/2004 17:42
Localisation : Provence

Message par LavaLava »

Il n'y à pas de problème ...
mais il ne faut pas qu'une procedure soit appelé par le prog principal et la thread en même temps !
sinon risque bug ... (conflit de variable, d'accés fichier,...)
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

LavaLava a écrit :Il n'y à pas de problème ...
mais il ne faut pas qu'une procedure soit appelé par le prog principal et la thread en même temps !
sinon risque bug ... (conflit de variable, d'accés fichier,...)
A bon ???
Je ne suis pas daccord...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

si si, problèmes de réentrance... ca peut se résoudre avec une variable statique et un code d'erreur par exemple...

Dri ;)
LavaLava
Messages : 173
Inscription : dim. 28/mars/2004 17:42
Localisation : Provence

Message par LavaLava »

Note: Les threads doivent être utilisés avec précaution, car il est possible que des ressources partagées (mémoire, fichiers, variables etc..) soient accédées au même moment ce qui causera des resultats aléatoires. Par exemple, il n'est pas possible de manipuler des chaines de caracteres dans differents threads au même moment, car un seul buffer est disponible pour leur gestion dans PureBasic. Il faut donc prendre des mesures (a l'aide de mutexs) pour eviter ce genre de situations. Par contre, la lecture des chaines de caractere ne pose pas de probleme.
Ce paragrphe est extrait de la doc de pb sur les threads ...
Le fait d'appeler une procedure depuis un thread ne crée pas de bug.
Dans mon premier post, j'ai repondu un peu vite car j'ai eu une mauvaise experience à ce sujet ...
dans un prog, le main et son thread pouvaient appeler la même routine pour recolter des infos sur un fichier : Quand cela arrivait => plantage ...
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Message par LeCyb »

Je suis pas dieu pour les threads mais je m'y intéresse assez pour te donner quelques conseils:

1) Tant que la V4 de PB n'est pas sortie n'utilise pas de chaînes dans les threads
2) Déclare tes variables en Protected dans les threads et procédures
3) Jamais de Global, Shared ou autre
4) Si tu veux quand même partager des données faut faire joujou avec les mutex
5) Ne pas faire joujou avec les interfaces graphiques (gadgets et fenêtres) dans les threads

En soi l'utilisation de procédures ne pose absolument aucun problème dans un thread, c'est ce que tu fais dans la procédure qui pourrait poser problème (gadgets, fichiers, chaînes etc...).
Vive le thread-safe !
Répondre