cherche exemple de synchronisation de sémaphores

cherche exemple de synchronisation de sémaphores - C++ - Programmation

Marsh Posté le 19-12-2002 à 12:08:18    

bonjour tout le monde!  :hello:  
 
tout est dans le titre: cela m'aidera à écrire mon programme (langage C) qui consiste à simuler un passage à niveau (voitures, trains, barrieres).
 
merci :)  
 
Remarque: g regarder sur google, g pas trouvé.

Reply

Marsh Posté le 19-12-2002 à 12:08:18   

Reply

Marsh Posté le 19-12-2002 à 12:12:46    

Unix/Linux ou Win32 ?

Reply

Marsh Posté le 19-12-2002 à 12:14:24    

bjone a écrit :

Unix/Linux ou Win32 ?


 
oh oui, pardon! :s
c sous linux (red hat)

Reply

Marsh Posté le 19-12-2002 à 12:39:56    

tiens c'est marrant j'ai le meme projet en cours de systeme :)
 
et ce qui m'emmerde le + c de devoir le faire sur une lib graphique vraiment pourrie !

Reply

Marsh Posté le 19-12-2002 à 13:02:22    

muad_dib a écrit :

tiens c'est marrant j'ai le meme projet en cours de systeme :)
 
et ce qui m'emmerde le + c de devoir le faire sur une lib graphique vraiment pourrie !


 
 
si ça se trouve, on bosse dans la même fac...
 
j'ai quand même réussi à faire 2 trains, 2 voitures, et les barrières.
il me reste à générer plusieurs voitures et trains aléatoirement, et surtout, à synchroniser les sémaphores! (par exemple quand mes voitures arrivent avant le train au niveau de la barrière, elles s'arretent :??:  et ensuite la barrière se ferme :lol: )
 
je ne recherche pas le projet tout fait, juste un exemple d'utilisation de sémaphores (et de signaux aussi).
 
 :p

Reply

Marsh Posté le 19-12-2002 à 13:11:21    

pour la lib graphique tu dois aussi utiliser ncurses ?
si oui, ils ressembles a quoi tes trains/voitures/barrieres?
 
pour les semaphores, a prioi une seule pourrait suffire
 
lorsqu'une voiture arrive au niveau de la barriere elle "wait" la semaphore.
des que la semaphore est disponible elle la relache (signal) et continue son chemin (traverse le passage et continue sur la route)
 
lorsqu'un train arrive a une certaine distance il "wait" la semaphore et ne la "signal" que lorsq'il s'est eloigné du passage.
 
je sais pas trop si l'utilisation des signaux serait vraiment utile.
 
(pour savoir si on est fans la meme fac : t'as un partiel cet apres midi ?)

Reply

Marsh Posté le 19-12-2002 à 13:15:07    

muad_dib a écrit :

(pour savoir si on est fans la meme fac : t'as un partiel cet apres midi ?)


 
ouais en logique, j'ai pas révisé grand chose d'ailleurs :sleep:  
 
t dans kel groupe en tp?

Reply

Marsh Posté le 19-12-2002 à 13:15:44    

moi non plus, c la galere :(
 
j suis dans le groupe 1
 
(et apres on a un TD d'algo)

Reply

Marsh Posté le 19-12-2002 à 13:20:53    

muad_dib a écrit :

pour la lib graphique tu dois aussi utiliser ncurses ?
si oui, ils ressembles a quoi tes trains/voitures/barrieres?
 
pour les semaphores, a prioi une seule pourrait suffire
 
lorsqu'une voiture arrive au niveau de la barriere elle "wait" la semaphore.
des que la semaphore est disponible elle la relache (signal) et continue son chemin (traverse le passage et continue sur la route)
 
lorsqu'un train arrive a une certaine distance il "wait" la semaphore et ne la "signal" que lorsq'il s'est eloigné du passage.
 
je sais pas trop si l'utilisation des signaux serait vraiment utile.
 


 
en fait, j'utilise 2 processus (trains & voitures)et 2 sémaphores (init à 0); et dans le processus du train, j'affiche une barrière dès que le train arrive à la zone critique et l'enlève dès qu'il ressort.
peut-être que ce serait mieux si je faisais plus de processus (un pour chaque véhicule et un pour la barrière) ?
 

Reply

Marsh Posté le 19-12-2002 à 13:27:21    

peut etre que ca serait plus "propre" de faire un processus par objet... je sais pas trop, mais en tout cas ca me parait moins simple
au depart je pensais plutot a une fonction qui met a jour a chaque tour de boucle la position de chaque objet, mais ca risque de ne pas vraiment etre en accord avec le sujet du probleme (semaphores et processus)
 
tu bosses a la fac ou chez toi ? (si c'est chez toi : c'est compliqué de configurer son systeme pour gerer les semaphores comme a la fac ?)

Reply

Marsh Posté le 19-12-2002 à 13:27:21   

Reply

Marsh Posté le 19-12-2002 à 13:33:19    

muad_dib a écrit :


 
tu bosses a la fac ou chez toi ?


 
non, j'bosse à la fac...
d'ailleurs j'ai prévu d'y passer la journée demain, pour terminer, j'espère :pt1cable:  
car à la rentrée il faudra attaquer le projet ADA, qui est pas mal non plus. :D

Reply

Marsh Posté le 19-12-2002 à 13:36:56    

en effet le projet ADA a l'air bien plus lourd
 
j'pensais aussi essayer de finir le projet systeme demain mais apparemment on a aucun TD, j'me trompe ?
 
(dans quel cas j'aurai sans doute pas envie de me lever juste pour le projet :))

Reply

Marsh Posté le 19-12-2002 à 13:40:57    

muad_dib a écrit :

en effet le projet ADA a l'air bien plus lourd
 
j'pensais aussi essayer de finir le projet systeme demain mais apparemment on a aucun TD, j'me trompe ?
 
(dans quel cas j'aurai sans doute pas envie de me lever juste pour le projet :))


 
ben non, ya aucun TD demain... normalement on est sensé avoir maths discrètes mais le chargé de td ne semble pas au courant :lol:

Reply

Marsh Posté le 19-12-2002 à 13:43:09    

oui et d'apres "la" chargée de TD le 2eme TD du mercredi soir passera le vendredi matin (a partir de janvier)
 
bon sur ce j'vais voir si j'peux sauver quelques meubles en logique...


Message édité par muad_dib le 19-12-2002 à 13:45:23
Reply

Marsh Posté le 19-12-2002 à 13:44:45    

ah oui j'oubliais
 
j'ai une derniere question:
 
avec ncruses, est-ce qu'il est possible de dessiner autre chose que des caracteres ou des lignes horizontales/verticales ? et ce uniquement sur une resolution lignes/colonnes et avec quelques couleurs ?
 

Reply

Marsh Posté le 19-12-2002 à 13:51:32    

ben ca depend comment tu fais ton programme: si c'est vraiment une histoire de voiture, alors y a pas grand chose a voir avec la programamtion concurrente. par contre si c'est une métaphore, comme par exemple 1 thread par voiture, etc, cherche dans les pthread et les semaphore LinuxThread (man sem_init, etc)


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 19-12-2002 à 13:54:37    

muad_dib a écrit :

ah oui j'oubliais
 
j'ai une derniere question:
 
avec ncruses, est-ce qu'il est possible de dessiner autre chose que des caracteres ou des lignes horizontales/verticales ? et ce uniquement sur une resolution lignes/colonnes et avec quelques couleurs ?
 
 


 
ça je sais pas, mais il faut que je remette la main sur le site que j'avais trouver sur ncurses. il me semble qu'il expliquait ce genre de choses...
par contre g trouvé le "man ncurses" en format pdf et il fait près de 500pages! aolrs pour l'imprimer, ça va être galère!
 

Reply

Marsh Posté le 19-12-2002 à 13:56:35    

Taz@PPC a écrit :

ben ca depend comment tu fais ton programme: si c'est vraiment une histoire de voiture, alors y a pas grand chose a voir avec la programamtion concurrente. par contre si c'est une métaphore, comme par exemple 1 thread par voiture, etc, cherche dans les pthread et les semaphore LinuxThread (man sem_init, etc)


 
oui, j'irai voir ce qu'il y a sur "man sem_init"

Reply

Marsh Posté le 19-12-2002 à 13:57:09    

oui en effet
 
j'avais aussi trouvé un site qui donnait un assez bon tutorial pour debuter avec ncurses (c comme ca que j'ai compris comment tracer des lignes assez simplement)
 
si tu veux j pourrais te passer le lien, la salle des machines sera encore ouverte apres le partiel ?

Reply

Marsh Posté le 19-12-2002 à 13:57:20    

ah oui et c'est en quelle salle le partiel ? :)

Reply

Marsh Posté le 19-12-2002 à 13:58:14    

muad_dib a écrit :

oui et d'apres "la" chargée de TD le 2eme TD du mercredi soir passera le vendredi matin (a partir de janvier)
 
bon sur ce j'vais voir si j'peux sauver quelques meubles en logique...


 
non moi je suis avec monsieur "machin'scu" (dsl je sais plus son nom), celui que personne n'aime :lol:

Reply

Marsh Posté le 19-12-2002 à 13:59:17    

muad_dib a écrit :

ah oui et c'est en quelle salle le partiel ? :)


tiens ça je sais pas! normalement en amphi bleu
d'ailleurs je ne suis même pas sûre de l'heure! (14h40, c ça?)

Reply

Marsh Posté le 19-12-2002 à 14:00:50    

kolaunne daitaiktai? :pt1cable:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 19-12-2002 à 14:01:59    

oui 14h40
c ptet bien amphi bleu, mais avec le coup du partiel de langage formels je me mefie:)

Reply

Marsh Posté le 19-12-2002 à 14:03:04    

Taz@PPC a écrit :

kolaunne daitaiktai? :pt1cable:  


 
plait-il ? :)

Reply

Marsh Posté le 19-12-2002 à 14:03:09    

muad_dib a écrit :

oui 14h40
c ptet bien amphi bleu, mais avec le coup du partiel de langage formels je me mefie:)


 
bon ben j'y vais sinon je serai à la bourre!  :bounce:

Reply

Marsh Posté le 19-12-2002 à 14:07:36    

c sur, il faut bien 35 minutes pour aller du batiment T a l'amphi bleu :lol:
 
hum desolé:)
 
a+

Reply

Marsh Posté le 19-12-2002 à 16:55:20    

voila le lien
 
http://www.pa2600.org/articles/ncurses.php
 
(une horreur ce partiel)

Reply

Marsh Posté le 19-12-2002 à 20:52:19    

muad_dib a écrit :

c sur, il faut bien 35 minutes pour aller du batiment T a l'amphi bleu :lol:
 
hum desolé:)
 
a+


 
non non, je n'étais pas bat' T, j'était chez moi   :na:  

Reply

Marsh Posté le 19-12-2002 à 20:54:11    

muad_dib a écrit :

voila le lien
 
http://www.pa2600.org/articles/ncurses.php
 
(une horreur ce partiel)


 
merci pour le lien, mais c pas celui là ke j'avais vu...
 
(ouais CT dur ce partiel :heink: )

Reply

Marsh Posté le 20-12-2002 à 11:21:32    

alors si t'en as un meilleur (de lien) je suis preneur

Reply

Marsh Posté le 20-12-2002 à 17:08:33    

muad_dib a écrit :

alors si t'en as un meilleur (de lien) je suis preneur


 
dès que je mets la main dessus, je te l'envoie :)

Reply

Marsh Posté le 20-12-2002 à 20:35:04    

sylvie_jr a écrit :

bonjour tout le monde!  :hello:  
 
tout est dans le titre: cela m'aidera à écrire mon programme (langage C) qui consiste à simuler un passage à niveau (voitures, trains, barrieres).
 
merci :)  
 
Remarque: g regarder sur google, g pas trouvé.

Andrew Tanenbaum donne de tres bons exemples sur la synchronisation de threads.
 
Sinon, un lien pas mal pour les threads Linux :
 
http://www-106.ibm.com/developerwo [...] /l-posix3/
 
:)

Reply

Marsh Posté le 20-12-2002 à 21:37:38    

sylvie_jr a écrit :


 
dès que je mets la main dessus, je te l'envoie :)


 
désolé je ne le trouve plus  :(

Reply

Marsh Posté le 20-12-2002 à 21:38:44    

BotMan a écrit :

Andrew Tanenbaum donne de tres bons exemples sur la synchronisation de threads.
 
Sinon, un lien pas mal pour les threads Linux :
 
http://www-106.ibm.com/developerwo [...] /l-posix3/
 
:)


 
ok, merci pour l'info
(j'avais pas chercher les sites en anglais :lol: )

Reply

Marsh Posté le 20-12-2002 à 21:46:16    

sylvie_jr a écrit :


 
ok, merci pour l'info
(j'avais pas chercher les sites en anglais :lol: )

l'anglais cai bien :o

Reply

Marsh Posté le 20-12-2002 à 22:07:23    

pour info, g passé la journée à la fac, et g réussi à synchroniser une voiture, un train et une barrière avec que des sémaphores. Maintenant, je dois rajouter les trains et voitures en sens inverse. Et ensuite, je devrai générer aléatoirement le circulement des voitures et des trains.
Mais d'après ce ke g entendu, synchroniser tout ça n'est possible que si on utilise les signaux :heink:  
déjà les sémaphores, g du mal, alors les signaux... :pt1cable:  
 
voilà   :)

Reply

Marsh Posté le 20-12-2002 à 22:33:17    

vous vouklez aps faire un PM plutot?  :pfff:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 20-12-2002 à 22:39:10    

Taz@PPC a écrit :

vous vouklez aps faire un PM plutot?  :pfff:  


 
un PM ? :??:

Reply

Marsh Posté le 20-12-2002 à 23:12:19    

un message privé quoi. ou echanger vos emails, allez boire une biere, faites quelque chose


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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