IPB

Bienvenue invité ( Connexion | Inscription )

> Programmation

Il est interdit de poster directement à la racine de ce forum.
Veuillez créer votre topic dans le sous-forum approprié.

> semaphore.h, ou comment faire croire que ça existe...
Options
dulrich
posté 3 Aug 2004, 23:21
Message #1


Méchant modérateur paranoïaque
*****

Groupe : Modérateurs
Messages : 10 755
Inscrit : 24 Jan 2002
Lieu : Confoederatio Helvetica, Kanton Wallis
Membre no 1 865



J'ai besoin de sémaphores.... avec des pthreads. Je m suis dis que le semaphore.h serait tout à fait judicieux.... mais voilà, c'est implémenté à moitié, faut passer par sem_open() et non sem_init() qui n'est pas implémenté rolleyes.gif (étonnant puisque la focntion est présente dans le .h enfin..).

Y a quoi d'autre, parce qu'à coup de sem_open je n'arrive pas à m'en sortir, j'ai des erreurs dans tous les coins sur les sem_wait etc.


--------------------
Nothing Else Matters
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
dulrich
posté 5 Aug 2004, 02:33
Message #2


Méchant modérateur paranoïaque
*****

Groupe : Modérateurs
Messages : 10 755
Inscrit : 24 Jan 2002
Lieu : Confoederatio Helvetica, Kanton Wallis
Membre no 1 865



CODE
int n = 2; /* Nombre de tˆaches */
pthread_cond_t *cond;
pthread_mutex_t *verrou;
void rendez_vous ()
{
pthread_mutex_lock (verrou);
n = n - 1;
if (n == 0) pthread_cond_broadcast (cond);
else pthread_cond_wait (cond, mutex);
n = n + 1;
pthread_mutex_unlock (verrou);
}


un truc pas trop loin de ça .....
je pensais à un type de rendez-vous proche de celui qui existe en ada... où tu peux filer des données d'une tâche à une autre de manière assez simple, sans générer d'attente active. Cela permet de gérer particulièrement bien le synchronisme....

En gros j'aurais besoin d'une tache de contrôle qui contient un tableau de valeurs, plusieurs taches (un nombre variable au cours du temps) vient chercher une à une ces valeurs et les traite (elle traitent toutes la même valeur en même temps (elles doivent commencer le traitement en même temps). Quand le traitement de toutes les valeurs a été fait on ajoute une tache... et ainsi de suite.

mais je vois que je vais devoir le réinventer :/ biggrin.gif ....


--------------------
Nothing Else Matters
Go to the top of the page
 
+Quote Post
juli1-
posté 19 Dec 2007, 15:47
Message #3


Nouveau Membre


Groupe : Membres
Messages : 36
Inscrit : 25 Sep 2007
Membre no 95 586



CITATION(dulrich @ 5 Aug 2004, 02:33) [snapback]799929[/snapback]

je pensais à un type de rendez-vous proche de celui qui existe en ada... où tu peux filer des données d'une tâche à une autre de manière assez simple, sans générer d'attente active. Cela permet de gérer particulièrement bien le synchronisme....


Non, tu n'as pas cela en C. C'est d'ailleurs la force d'Ada : avoir une lib de tasking et de gestion de la concurrence super forte au niveau sémantique, alors qu'en C, il faut que tu te dépatouilles toi-même à coup de mutex et autres conditions. Revers de la médaille : Ada nécessite une runtime pour gérer tout cela ...
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 19th May 2024 - 07:57