Forum: PC-Programmierung überprüfen, welcher Thread eine Funktion aufgerufen hat


von Hermann (Gast)


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?

von Rolf Magnus (Gast)


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.

von Hermann (Gast)


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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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?

von Hermann (Gast)


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.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Ich meinte eher das das syntaktisch festgelegt ist weiß jezt aber auch 
ncith ob du z.B. in einer Objektorientierten Sprache arbeitest.

von Hermann (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.