Moin! In meinem Programm, welches aus mehreren Threads besteht, habe ich viele Funktionen, die nur dazu gedacht sind, aus einem bestimmten Thread aufgerufen zu werden. Dies würd ich gerne zu Debugzwecken sicherstellen. Mit ner Assertion oder so. Gibt es ne Möglichkeit, im Code festzustellen, welcher Thread gerade läuft, um so eine Assertion bauen zu können?
Das hängt vom verwendeten Thread-API ab, aber normalerweise gibt es eine Funktion, die dir die Thread-ID des aufrufenden Thread mitteilt. Bei posix threads heißt sie z.B. pthread_self(). "Welcher Thread gerade läuft" ist übrigens nicht unbedingt eindeutig. Auf Multicore oder -prozessor-Systemen können mehrere Threads gerade laufen.
> "Welcher Thread gerade läuft" ist übrigens nicht unbedingt eindeutig.
Naja ok, schlecht ausgedrückt. Aber is ja klar geworden, was ich gemeint
hab ;)
Ja, danke, gibts wirklich. Als Thread-API benutze ich übrigens SDL. Nun
muss ich nur die Thread-IDs nach der Erzeugung irgendwo speichern, und
mit der ID des aufrufenden Threads in der Funktion vergleichen
Unter java kann jeder Thread einen Namen kriegen, vieleicht geht das hier auch? Per Thread.currentThread() kriegt man dann den aktuellen Thread und kann den Namen erfragen. ABER! > habe ich viele Funktionen, die nur dazu gedacht sind, > aus einem bestimmten Thread aufgerufen zu werden. Kannst du das nicht anders sicherstellen?
>> habe ich viele Funktionen, die nur dazu gedacht sind, >> aus einem bestimmten Thread aufgerufen zu werden. > Kannst du das nicht anders sicherstellen? Doch, eigentlich ist das sichgesellt, wenn jeder sich an das gedachte Softwaredesign haelt. Aber fehler passieren. Und da Threadingfehler schwer zu finden sind, wenn sie erstmal drin sind, haette ich gerne einen Sicherheitscheck fuer den Debugcode.
Ich meinte eher das das syntaktisch festgelegt ist weiß jezt aber auch ncith ob du z.B. in einer Objektorientierten Sprache arbeitest.
Das würde mich jetzt genauer interessieren, wie du das meinst. :) Das Programm ist in C++ geschrieben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.