Echtzeit mit System

Die Systemprogrammierung von Windows Embedded Compact 7

29. März 2011, 11:50 Uhr | Hannes Klein und Rudi Swiontek
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Thread-Synchronisierung: Kampf den Deadlocks

Die Kunst bei der Multithread-Programmierung liegt im Vermeiden von Deadlocks, dem Schützen des Zugriffs auf Ressourcen und dem Sicherstellen der Thread-Synchronisierung. Windows Embedded Compact umfasst mehrere Kernelobjekte zum Synchronisieren des Ressourcenzugriffs für Threads in Treibern oder Anwendungen, beispielsweise Critical Sections, Mutexe, Semaphores, Events und Interlock-Funktionen. Die Auswahl des Objekts hängt von der Aufgabe ab, die ausgeführt werden soll.

Critical Sections sind Objekte, die in einem einzigen Prozess die Threads synchronisieren und den Zugriff auf Ressourcen schützen. Der Zweck einer Critical Section liegt darin, gemeinsam genutzte Ressourcen während des Synchronisierungsvorganges vor dem Zugriff durch andere Prozesse zu schützen. Um auf eine durch einen kritischen Abschnitt geschützte Ressource zuzugreifen, ruft ein Thread die Funktion EnterCriticalSection auf. Diese Funktion blockiert den Thread, bis die in der Critical Section angesprochene Ressource verfügbar ist.

passend zum Thema

Listing Thread Mutex
Listing 1. Thread-Code wird durch Mutex geschützt. Mutexe sind ein Thread-Synchronisationsverfahren, bei dem der Zugriff mehrerer Prozesse auf eine gemeinsame Ressource koordiniert wird.

Im Gegensatz zu kritischen Abschnitten, die auf einen einzigen Prozess beschränkt sind, können Mutexe (Listing 1) den unabhängigen Zugriff auf die von mehreren Prozessen verwendeten Ressourcen koordinieren. Ein Mutex ist ein Kernelobjekt, das die prozessübergreifende Synchronisierung unterstützt. Um einen Mutex zu erstellen, wird die Funktion CreateMutex aufgerufen. Die Threads in anderen Prozessen können CreateMutex ebenfalls aufrufen und den gleichen Namen angeben. Diese nachfolgenden Aufrufe erstellen jedoch keine neuen Kernelobjekte, sondern geben an den vorhandenen Mutex ein Handle zurück. Die Threads in separaten Prozessen können das Mutex-Objekt nun zum Synchronisieren des Zugriffs auf die geschützte, freigegebene Ressource verwenden. Das Event-Objekt ist ein weiteres Kernelobjekt, das Threads synchronisiert. Dieses Objekt ermöglicht Anwendungen, anderen Threads mitzuteilen, wenn eine Aufgabe beendet ist oder Daten für potentielle Leser verfügbar sind.


  1. Die Systemprogrammierung von Windows Embedded Compact 7
  2. Implementieren von Systemanwendungen
  3. Thread-Synchronisierung: Kampf den Deadlocks
  4. Implementieren der Ausnahmebehandlung

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Microsoft

Weitere Artikel zu Microsoft Deutschland GmbH

Weitere Artikel zu Betriebssysteme