pthread_mutex_lock prüfen?

#4443314
Lesenswert?
• ▲
▼
Werner schrieb:
> prüft ihr den Rückgabewert von pthread_mutex_lock

Ja.

> oder ist da
> sowieso schon das Kind in den Brunnen gefallen wenn der Aufruf
> fehlschlägt?

Wenn der Aufruf fehlschlägt, dann läuft etwas anders, als du es erwartet 
hast. Die man-Page listet mögliche Gründe für ein Fehlschlagen auf. 
Kannst du vorab sämtliche Fehlerszenarien ausschließen? Vermutlich 
nicht. Also prüfen.

> Wie viele Threads dürfen maximal gleichzeitig auf einen Mutex
> warten?

Soviele, wie deine Thread-Implementierung bzw. dein Rechner zulassen, 
nehme ich an. Für pthread_mutex_lock() ist zumindest kein Limit 
angegeben.
#4444443
Lesenswert?
• ▲
▼
Werner schrieb:
> mal so, prüft ihr den Rückgabewert von pthread_mutex_lock, oder ist da
> sowieso schon das Kind in den Brunnen gefallen wenn der Aufruf
> fehlschlägt?

Je nachdem, welcher Fehler auftritt, mag es zwar in den Brunnen gefallen 
sein, aber willst du dann in deinem Programm einfach so weitermachen, 
als hätte alles funktioniert und deinen Zugriff auf was auch immer du 
synchronisierst dann stillschweigend ohne Mutex-Lock machen?
#4444522
Lesenswert?
• ▲
▼
Rolf M. schrieb:
> Je nachdem, welcher Fehler auftritt, mag es zwar in den Brunnen gefallen
> sein, aber willst du dann in deinem Programm einfach so weitermachen,
> als hätte alles funktioniert

Natürlich nicht.

Alle dokumentierten Fehler sind letzendlich Programmierfehler. Also 
sollte man dafür sorgen, dass sie behoben werden:
1
err = pthread_mutex_lock(...);
2
if (err != 0) {
3
    log("Timmy ist in den Brunnen gefallen", err);
4
    abort(); // oder was auch immer
5
}

In einem Embedded-Programm, das nicht einfach abbrechen darf, ist die 
korrekte Fehlerbehandling nicht so einfach ...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.