J'appel des procedures à partir d'une thread.
Est ce dangereux ? Ou cela ne pose aucun problème ?
Appel de procedure dans une thread : conséquence ?
-
- 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 ?
Vive le temps libre !
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
No pb... 

Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
A bon ???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,...)
Je ne suis pas daccord...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
Ce paragrphe est extrait de la doc de pb sur les threads ...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.
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 ...
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...).
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 !