liste chainee dynamique sur plusieurs threads - C - Programmation
Marsh Posté le 02-01-2005 à 17:50:46
une seule liste chainée, c'est ok. par contre pas globale, mais privée à un seul thread qui en coordonne l'accès.
Marsh Posté le 03-01-2005 à 06:38:01
Plus spécifiquement, contrairement à fork(), la création de threads implique que par défaut, toutes les données sont partagées (sauf les variables locales, etc.). Donc, comme le dit Taz, une liste chaînée, c'est OK.
Par contre, pour PC Queue classique (PC = Producer/Consumer), il n'y a pas forcément besoin qu'un thread soit le coordinateur. Il suffit à chacun de s'approprier le mutex correspondant à la liste...
Marsh Posté le 03-01-2005 à 18:24:27
Donc si je crée ma liste chainée dans mon main, que mon main crée ensuite les threads qui vont bien, les threads pourront alors modifier la liste chainée ?
Taz, qu'entend-tu par "privée à un seul thread qui en coordonne l'accès" ?
Marsh Posté le 03-01-2005 à 18:32:05
darksword a écrit : |
rien, car pour passer des données à une autre thread, il faut bien le faire d'une manière synchronisée (i.e. thread safe)
Marsh Posté le 03-01-2005 à 19:24:05
ce que je veux dire, c'est que moi je ferais ça un peu comme un moniteur, un thread avec des méthodes : ajout, suppression, etc, les mécanismes de synchronisation étant assuré par ce thread
Marsh Posté le 02-01-2005 à 17:13:49
kikoo.
J'ai besoin d'utiliser des listes chainées dynamiques sur plusieurs threads executant le meme traitement (systeme client/serveur).
Est-ce que je peux utiliser une liste chainée globale (et donc allouer de la mémoire
à partir des differents threads) (avec les mechanisme d'exclusion mutuelle qui vont bien) ou faut-il que je réplique les changements dans la liste sur les differents threads (chaque threads à sa liste chainée) ?
Si ce n'est pas possible, ia t-il une méthode pour écrire des flux binaires dans la mémoire partagé afin de récupérer le plus rapidement possible les infos.
bonne année en passant