überprüfen, welcher Thread eine Funktion aufgerufen hat

Gast #1454760
Lesenswert?

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?
Gast #1454882
Lesenswert?

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.
Gast #1455012
Lesenswert?

> "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
Gast #1455423
Lesenswert?

>> 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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren