Amonchakai a écrit :
1) c'est au sujet des CRITICAL_SECTION bon j'ai compris comment on les utilise pour que chacun des threads attendent que l'un est fini pour qu'un autre fasse une action. Mais imaginons que nous avons trois champs :
Donc si j'ai bien compris si on veut partager ces trois champs entre tous nos threads, et que l'on sait qu'ils vont toujours rester groupé il faut créer une section critique comme par exemple :
Code :
- CRITICAL_SECTION abc;
|
|
Ce que tu appelles champs, ce sont des variables selon le langage courant, des objets selon la norme. Ces variables ont une classe de stockage, et selon celle-ci, elles peuvent être partagées ou non par différents threads. (Note que C++ ne connait rien des threads, donc c'est entièrement dépendant de l'implémentation, et vu que tu ne la précises pas, on ne peux pas en dire bien plus).
Défini ce que tu veux dire par "groupé".
Citation :
et ensuite dans nos threads on fait EnterCriticalSection() et LeaveCriticalSection().
mais si les trois s'utilisent indépendament il faut créer une section critique par champ ??? (si c'est ça c'est pas très pratique non ?).Et en plus se sera à chaque fois à nous de faire le lien entre le champ que l'on veut utiliser et sa section critique... Donc c'est vraiment comme ça que ça s'utilise ?
|
Tu peux faire 3 sections critiques consécutives, ou une seule, du moment que tu protèges la lecture/ecriture de tes objets partagés par les threads. Je crois qu'il est bon de minimiser le nombre et la taille des sections critiques, mais il faut surtout s'assurer en priorité que la synchronisation est correcte. Les erreurs de ce genre sont quasi impossibles à reproduire, et le debugage est ignoble.
Citation :
2) Sinon j'avait lu qu'il fallait éviter d'utiliser les champs pour syncroniser les threads. C'est donc cette méthode avec les critical_section qu'il faut éviter de faire pour la syncronisation c'est ça ?
|
?
Citation :
3) D'un point de vue mise en forme, quand on crée un object on déclare l'object dans un header et on met les definitions des methodes dans un .cpp. Pour les threads y a t'il une convention ? (si bien sûr s'il n'est pas dans un object, sinon pas de problèmes).
|
... quand on crée une classe, on la définie dans un header, on déclare donc les fonctions membres dans le header, et on les défini
dans le .cpp. Pour les conventions, je ne sais pas, c'est très religieux ce genre de truc.
Citation :
4) Quand a l'utilisation d'un thread, on m'avait dit qu'il ne fallait confier a des threads que des petites taches pas trop lourdes comme par exemple gérer une horloge qui envoie des message toutes les X secondes. Vous confirmer ???
|
Non.
Message édité par ++fab le 21-05-2006 à 21:43:01