[C] Liste chainée et mémoire partagée

Liste chainée et mémoire partagée [C] - C++ - Programmation

Marsh Posté le 17-04-2003 à 17:21:17    

Voila, j'aimerez savoir quelle solution *simple* vous avez déjà pu trouver pour pouvoir partager une liste chainée entre 2 processus ?
 
pke pour le moment je ne vois comme seul solution que de créer un nouveau segment pour chaque élément :/
 
y'a t'il un autre moyen de faire ça ?

Reply

Marsh Posté le 17-04-2003 à 17:21:17   

Reply

Marsh Posté le 17-04-2003 à 18:11:44    

Quel OS ?
T'es obligé d'utiliser des processus ? Pas possible avec des thread ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-04-2003 à 18:15:37    

cela dit, tu peux envisager un modèle client server ou ton application serveur dialogque par pipe avec les clients. c'est une gestion tres jacobine des données, meme si c'est lent, c'est tres efficace en terme d'utilisation.
 
bref on attend que tu spécifie ton OS pour t'indiquer quelle bibliotheque utilisé et te conseiller niveau sémaphore

Reply

Marsh Posté le 17-04-2003 à 18:41:38    

GNU/Linux ;)
 
en faite mon appli va se diviser en 2 par un fork, une gère une operation à faire en boucle et l'autre se contente d'infléchire sur les options au cour de l'opération de l'autre
 
actuellement tout marche en un seul processus mais j'aime pas du tout pke suivant les futurs améliorations ça va devenir invivable :D
j'ai déjà tout fait en liste chainé ...
 
en faite j'ai prit cette voix la pke c'est celle ki me paraissait la mieux adapté à ce ke je veux faire
 
c'est un soft ki gère un lcd sur port //, permettant d'y afficher diverses info système dessus
la partie "commune" au programme c'est le traitement de la configuration, le chargement des plugins (les infos systèmes seront récup par des plugins pour la modularité), etc ...
 
ensuite ça se sépare en 2, une partie gère le traitement des infos à affiché sur le lcd et à envoyer ensuite
cette partie est assez complexe pk'il faut traiter une string ki représente une ligne du lcd et ki indique qu'elle sont les infos à afficher, ensuite il faut récup les infos, et une fois toutes les lignes du lcd constitué on les envois au lcd (seulement ça aussi c'est assez complexe puisqu'il faut traiter le protocol de com avec le lcd, les divers effets graphique etc ...)
 
l'autre partie concerne simplement le gui, mais il faut ke le gui soit indépendants du traitement pke le soft doit pouvoir tourner sans gui (genre un daemon)
 
et de part la lignéarité d'un lcd (enchainement de ligne), un système de liste chainé c'est avéré le plus logic ;)
 
helloword > je fais pas encore bien la différence entre les deux :pt1cable: tu peux m'expliker ?
 
Taz > ça je le sens mal pke ça rajouterai une sacré couche à tout ça !
une couche de communication à gérer en plus :/


Message édité par Deadog le 17-04-2003 à 18:43:24
Reply

Marsh Posté le 17-04-2003 à 19:12:30    

Un thread correspond à flux d'exécution dans le même processus, donc dans le même espace mémoire, accédant aux même données (avec tous les problèmes que cela pose).
Alors que 2 processus différents "vivent" dans 2 espaces mémoire différents.
 
Sinon, sans aller jusqu'à créer un segment de mémoire partagé pour chaque élément de la liste, il y a peut être moyen de gérer toute la liste chainée dans un seul segment partagé [:figti]

Reply

Marsh Posté le 17-04-2003 à 19:12:45    

ton application doit etre multi-thread
la référence http://www.llnl.gov/computing/tuto [...] /MAIN.html

Reply

Marsh Posté le 17-04-2003 à 19:41:07    

ok, merci :)
 
j'ai avoir un peu de lecture moi :sleep:

Reply

Marsh Posté le 17-04-2003 à 21:22:18    

Oui les thread c'est tout indiqué.
Plus aucun probleme de partage memoire alors.
Attention cependant à ne pas modifier la liste pendant que l'autre la lit etc ... (=> exclusion mutuelle, accès concurrents ...)
Bon courage.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-04-2003 à 22:57:24    

huuum, avec un "jeton" en mémoire ça devrait allé ?
genre déclarer un char, si il vaut 0 on peux écrire dans la mémoire, s'il vaut >0 on écrit pas ?

Reply

Marsh Posté le 17-04-2003 à 22:59:58    

non, ça n'ira pas. utilises les mutex et semaphores de posix thread (man pthread_mutex_create) par exemple

Reply

Marsh Posté le 17-04-2003 à 22:59:58   

Reply

Marsh Posté le 17-04-2003 à 23:11:23    

++Taz a écrit :

non, ça n'ira pas. utilises les mutex et semaphores de posix thread (man pthread_mutex_create) par exemple


 
 
oui, c ce ke je viens de voir dans ce ke tu ma filé :D
j'avais aps encore commencer à lire ;)

Reply

Sujets relatifs:

Leave a Replay

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