![]() |
NiboRoboLib 3.6 - MThread Library
|
Mit einem Mutex kann eine einzelne Resource vor gleichzeitigem Zugriff geschützt werden. Mehr ...
#include "thread.h"
gehe zum Quellcode dieser Datei
Datenstrukturen | |
struct | mutex_t |
Funktionen | |
void | mutext_init (mutex_t *mutex) |
Mutex initialisieren. | |
void | mutext_delete (mutex_t *mutex) |
uint8_t | mutext_lock (mutex_t *mutex, uint16_t timeout) |
Nach dem Erfolgreichen Aufruf dieser Funktion gehört der Mutext dem aufrufenden Thread. Mehr ... | |
void | mutext_unlock (mutex_t *mutex) |
Freigabe des Mutex. Mehr ... | |
uint8_t | mutext_lockISR (mutex_t *mutex) |
Nach dem Erfolgreichen Aufruf dieser Funktion gehört der Mutext dem Interrupt. Mehr ... | |
void | mutext_unlockISR (mutex_t *mutex) |
Freigabe des Mutex. Mehr ... | |
Mit einem Mutex kann eine einzelne Resource vor gleichzeitigem Zugriff geschützt werden.
Es gibt immer höchstens einen Besitzer, der den Mutex "gelockt" hat! Erst nach einem "unlock" kann ein anderer Thread auf den Mutex zugreifen.
uint8_t mutext_lock | ( | mutex_t * | mutex, |
uint16_t | timeout | ||
) |
Nach dem Erfolgreichen Aufruf dieser Funktion gehört der Mutext dem aufrufenden Thread.
Andere Threads die mutext_lock aufrufen müssen solange warten bis der Mutex wieder freigegeben wird. Der Besitzende Thread darf die Funktion mehrmals aufrufen, der Mutex wird dann erst wieder freigegeben wenn mutext_unlock genausooft aufgerufen wurde.
timeout,: | Wert in Ticks / TO_POLL (nicht warten) / TO_INF (ewig warten) |
uint8_t mutext_lockISR | ( | mutex_t * | mutex | ) |
Nach dem Erfolgreichen Aufruf dieser Funktion gehört der Mutext dem Interrupt.
Die Funktion kehrt direkt mit dem Ergebnis zurück ob der Mutex gelockt werden konnte. Andere Threads die mutext_lock aufrufen müssen solange warten bis der Mutex wieder freigegeben wird. Der Interrupt darf die Funktion mehrmals aufrufen, der Mutex wird jedoch erst wieder freigegeben wenn mutext_unlockISR genausooft aufgerufen wurde.
void mutext_unlock | ( | mutex_t * | mutex | ) |
Freigabe des Mutex.
Falls mutext_lock vom besitzenden Thread mehrfach aufgerufen wurde muss auch die Funktion mutext_unlock mehrfach aufgerufen werden!
void mutext_unlockISR | ( | mutex_t * | mutex | ) |
Freigabe des Mutex.
Falls mutext_lock vom Interrupt mehrfach aufgerufen wurde muss auch die Funktion mutext_unlockISR mehrfach aufgerufen werden!