Hallo
zur Zeit portiere ich ein Programm von Windows nach Linux(g++)!!!
Im Windows gibt es die Threadfunktionen: " WaitForSingleObject", "SetEvent", "ResetEvent" und "PulseEvent".
Wie ich herausgefunden habe gibt es in Linux sogennante Condition Variablen.
Dazu gibt es folgende Funktionen.
- pthread_cond_wait wartet auf ein condition
- pthread_cond_signal weckt einen (evtl.) wartenden thread mit der conditionvariable auf
- pthread_cond_broadcast weckt alle (evtl.) wartenden thread mit der conditionvariable auf
- pthread_cond_destroy zerstört eine condition
Meiner Meingung nach entsprechen die Fuktionen pthread_cond_signal und pthread_cond_broadcast dem in Windows der Funktion PulseEvent.
Also ich setze eine condition, die wartenden Threads werden geweckt und die condition setzt sich wieder zurück, so habs ich im Debugger gesehen.
Jetzt fehlt mir nur noch die Set-,Resetfunktion!!!
Gibt es irgendein attribut das man vielleicht setzten muss???
Bei der Initialisierung der Conditionvariable (pthread_cond_init(pthread_cond_t*cond, const pthread_condattr_t *attr)) hab ich bei der zweiten übergabe “NULL” an (Standardattribute).
Genauere Infos hab ich leider nicht gefunden, vielleicht hat ja einer etwas!!!!
Danke im Voraus
juschold
Threadfunktionen
set:juschold hat geschrieben:Jetzt fehlt mir nur noch die Set-,Resetfunktion!!!
Code: Alles auswählen
pthread_mutex_lock(&mutex);
bCondition = true;
pthread_cond_broadcast(&cond);
pthread_mutex_unlock(&mutex);
Code: Alles auswählen
pthread_mutex_lock(&mutex);
bCondition = false;
pthread_mutex_unlock(&mutex);
gms