create_mutexT_create_mutexCreateMutexCreateMutex (Operator)

Name

create_mutexT_create_mutexCreateMutexCreateMutex — Erzeugen eines Mutex-Synchronisationsobjektes.

Signatur

create_mutex( : : AttribName, AttribValue : MutexHandle)

Herror T_create_mutex(const Htuple AttribName, const Htuple AttribValue, Htuple* MutexHandle)

void CreateMutex(const HTuple& AttribName, const HTuple& AttribValue, HTuple* MutexHandle)

void HMutex::HMutex(const HTuple& AttribName, const HTuple& AttribValue)

void HMutex::HMutex(const HString& AttribName, const HString& AttribValue)

void HMutex::HMutex(const char* AttribName, const char* AttribValue)

void HMutex::HMutex(const wchar_t* AttribName, const wchar_t* AttribValue)   (Nur Windows)

void HMutex::CreateMutex(const HTuple& AttribName, const HTuple& AttribValue)

void HMutex::CreateMutex(const HString& AttribName, const HString& AttribValue)

void HMutex::CreateMutex(const char* AttribName, const char* AttribValue)

void HMutex::CreateMutex(const wchar_t* AttribName, const wchar_t* AttribValue)   (Nur Windows)

static void HOperatorSet.CreateMutex(HTuple attribName, HTuple attribValue, out HTuple mutexHandle)

public HMutex(HTuple attribName, HTuple attribValue)

public HMutex(string attribName, string attribValue)

void HMutex.CreateMutex(HTuple attribName, HTuple attribValue)

void HMutex.CreateMutex(string attribName, string attribValue)

Beschreibung

Ein Mutex ist ein Synchronisationsobjekt, welches den wechselseitigen Ausschluss (MUTual EXclusion) zwischen den Threads eines Prozesses regelt. Damit lassen sich gleichzeitige Zugriffe auf gemeinsame Ressourcen wie beispielsweise globale Datenstrukturen blockieren um inkonsistente Zustände zu verhindern. Ein Mutex hat zwei mögliche Zustände: er ist frei, d.h. der Mutex wird von keinem Thread gehalten, oder gesperrt, d.h. er gehört einem bestimmten Thread. Threads, die versuchen einen Mutex zu sperren, der bereits von einem anderen Thread gehalten wird, müssen warten, bis dieser Thread den Mutex wieder frei gibt. Anders als bei Events kann nur der Thread einen gesperrten Mutex wieder freigeben, der ihn auch hält, d.h. der ihn gesperrt hat.

create_mutexcreate_mutexCreateMutexCreateMutexCreateMutex legt ein Mutexobjekt an und initialisiert es entsprechend der Attribute, die über die Parameter AttribNameAttribNameAttribNameAttribNameattribName und AttribValueAttribValueAttribValueAttribValueattribValue spezifiziert werden. AttribNameAttribNameAttribNameAttribNameattribName definiert den Parameter und AttribValueAttribValueAttribValueAttribValueattribValue den Wert des Parameters. Die folgende Beschreibung beschreibt für die möglichen Parametern alle unterstützten Werte:

''""""""""

der leere String setzt die Standardattribute.

'type'"type""type""type""type"

spezifiziert das Verhalten eines Mutexes, wenn ein Thread versucht einen bereits gesperrten Mutex zu besitzen:

'sleep'"sleep""sleep""sleep""sleep"

unterbricht den aufrufenden Thread und legt ihn schlafen (Standard). Das Verhalten ist allerdings undefiniert, wenn der gesperrte Mutex bereits dem Thread gehört.

'spin'"spin""spin""spin""spin"

ist die schnelle Implementierung eines Mutexes, die in einer Schleife auf die Freigabe des Mutexes wartet. Das Verhalten ist allerdings undefiniert, wenn der gesperrte Mutex bereits dem Thread gehört.

'recursive'"recursive""recursive""recursive""recursive"

unterbricht den aufrufenden Thread und legt ihn schlafen, wenn dem aufrufenden Thread der Mutex nicht gehört. Allerdings kann ein rekursiver Mutex erneut von dem Thread gesperrt werden, dem er gehört. Ein rekursiver Mutex wird nicht freigegeben, bis die Anzahl der Freigaben die Anzahl der Sperraufrufe erreicht.

Nach der Initialisierung ist der Mutex frei.

Ausführungsinformationen

Parameter

AttribNameAttribNameAttribNameAttribNameattribName (input_control)  number(-array) HTupleHTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)

Mutex-Attribut

Defaultwert: []

Werteliste: 'type'"type""type""type""type"

AttribValueAttribValueAttribValueAttribValueattribValue (input_control)  number(-array) HTupleHTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)

Mutex-Attributwert

Parameteranzahl: AttribValue == AttribName

Defaultwert: []

Werteliste: 'recursive'"recursive""recursive""recursive""recursive", 'sleep'"sleep""sleep""sleep""sleep", 'spin'"spin""spin""spin""spin"

MutexHandleMutexHandleMutexHandleMutexHandlemutexHandle (output_control)  mutex HMutex, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Mutex-Synchronisationsobjekt

Ergebnis

Sind die Parameterwerte korrekt, dann liefert create_mutexcreate_mutexCreateMutexCreateMutexCreateMutex den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

lock_mutexlock_mutexLockMutexLockMutexLockMutex, clear_mutexclear_mutexClearMutexClearMutexClearMutex

Siehe auch

clear_mutexclear_mutexClearMutexClearMutexClearMutex

Modul

Foundation