liste chainee dynamique sur plusieurs threads

liste chainee dynamique sur plusieurs threads - C - Programmation

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 :D

Reply

Marsh Posté le 02-01-2005 à 17:13:49   

Reply

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.

Reply

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...
 

Reply

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" ?

Reply

Marsh Posté le 03-01-2005 à 18:32:05    

darksword a écrit :


Taz, qu'entend-tu par "privée à un seul thread qui en coordonne l'accès" ?


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)


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 03-01-2005 à 18:43:14    

?

Reply

Marsh Posté le 03-01-2005 à 19:09:07    

pas mieux

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed