www.mikrocontroller.net

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


Autor: Hermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

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

Autor: Hermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das würde mich jetzt genauer interessieren, wie du das meinst. :)

 Das Programm ist in C++ geschrieben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.