mtx_timedlock
| Definiert im Header <threads.h> |
||
| int mtx_timedlock( mtx_t *restrict mutex, const struct timespec *restrict time_point ); |
(seit C11) | |
Blockiert den aktuellen Thread, bis der durch mutex zeigende Mutex gesperrt ist oder bis der absolute Kalenderzeitpunkt basierend auf TIME_UTC, auf den time_point zeigt, erreicht wurde.
Da diese Funktion eine absolute Zeit verwendet, muss der Kalenderzeitpunkt manuell berechnet werden, falls eine Dauer benötigt wird.
Das Verhalten ist undefiniert, wenn der aktuelle Thread den Mutex bereits gesperrt hat und der Mutex nicht rekursiv ist.
Das Verhalten ist undefiniert, wenn der Mutex kein Timeout unterstützt.
Vorherige Aufrufe von mtx_unlock für denselben Mutex *synchronisieren mit* dieser Operation (wenn diese Operation erfolgreich ist), und alle Sperr-/Entsperroperationen für einen gegebenen Mutex bilden eine einzige totale Reihenfolge (ähnlich der Modifikationsreihenfolge eines Atoms).
Inhalt |
[bearbeiten] Parameter
| mutex | - | Zeiger auf die zu sperrende Mutex |
| time_point | - | Zeiger auf die absolute Kalenderzeit, bis zu der auf das Timeout gewartet werden soll |
[bearbeiten] Rückgabewert
thrd_success bei Erfolg, thrd_timedout, wenn die Timeout-Zeit erreicht wurde, bevor der Mutex gesperrt werden konnte, thrd_error bei einem Fehler.
[bearbeiten] Referenzen
- C17-Standard (ISO/IEC 9899:2018)
- 7.26.4.4 Die Funktion mtx_timedlock (S. 278)
- C11-Standard (ISO/IEC 9899:2011)
- 7.26.4.4 Die Funktion mtx_timedlock (S. 381-382)
[bearbeiten] Siehe auch
| (C11) |
Zeit in Sekunden und Nanosekunden (Struktur) |
| (C11) |
blockiert, bis ein Mutex gesperrt ist (Funktion) |
| (C11) |
sperrt einen Mutex oder kehrt zurück, ohne zu blockieren, wenn er bereits gesperrt ist (Funktion) |
| (C11) |
entsperrt einen Mutex (Funktion) |
| C++ Dokumentation für timed_mutex::try_lock_until
| |
| C++ Dokumentation für recursive_timed_mutex::try_lock_until
| |
[bearbeiten] Externe Links
| GNU GCC Libc Manual: ISO-C-Mutexes |