Threadfunktionen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
juschold
Beiträge: 24
Registriert: 17.10.2006 16:12:57

Threadfunktionen

Beitrag von juschold » 23.11.2006 12:29:45

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

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 23.11.2006 22:23:34

juschold hat geschrieben:Jetzt fehlt mir nur noch die Set-,Resetfunktion!!!
set:

Code: Alles auswählen

      pthread_mutex_lock(&mutex);
      bCondition = true;
      pthread_cond_broadcast(&cond);
      pthread_mutex_unlock(&mutex);
reset:

Code: Alles auswählen

      pthread_mutex_lock(&mutex);
      bCondition = false;
      pthread_mutex_unlock(&mutex);
Gruß
gms

Antworten