Semaphor
-
Hallo,
mein Semaphor soll erst 0 Ressourcen und dann 10 haben.
Die einzige Moeglichkeit die ich sehe ist 2 mal die sem_init Methode mit dem gleichen Semaphor aufzurufen. Gibt es da bedenken ?int sem_init(sem_t *sem, int pshared, unsigned int value); int main() { sem_t mySemaphor: sem_init(&mySemaphor,0) // hier bekommt das Semaphor erst mal 0 Ressorcen // Let the threads run :) sem_init(&mySemaphor,10) // jetzt bekommt das Semaphor 10 Ressourcen // Let the threads run again :) }
-
Wie dir die Manpage verraten hätte, erzeugt das undefiniertes Verhalten.
Du kannst den Semaphor aber schließen, neu öffnen und dann neu initialisieren. Wobei mir das Vorhaben ziemlich seltsam vorkommt - du solltest nicht gleichnamige Semaphore für verschiedene Ressourcen benutzen.
-
welche manpage ?
man sem_init
gibts das fuer jeden Systemcall ?
-
Ich brauche aber dieses Verhalten. Mein Semaphor soll zuerst 0 Ressorcen haben ( also kein Thread hat Zugriff ) und spaeter wenn die Hardware initialisiert ist sollen 10 Threads Zugriff haben. Wie soll ich es sonst machen ??