09.03.2014 Aufrufe

Konzepte und funktionaler Vergleich von Thread-Systemen

Konzepte und funktionaler Vergleich von Thread-Systemen

Konzepte und funktionaler Vergleich von Thread-Systemen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4.2.5 Win32-<strong>Thread</strong>s (Windows 95, Windows NT)<br />

Die folgenden Informationen sind [Richter 97] entnommen.<br />

<strong>Thread</strong>management<br />

self()<br />

create()<br />

exit()<br />

join()<br />

detach()<br />

cancel()<br />

Abbruchmaskierung<br />

Abbruchvorsorge<br />

Mittels GetCurrent<strong>Thread</strong>() <strong>und</strong> DuplicateHandle()<br />

Create<strong>Thread</strong>()<br />

Exit<strong>Thread</strong>()<br />

WaitForSingleObject(), Ergebnis mit GetExitCode<strong>Thread</strong>()<br />

Letztes CloseHandle() (Prozeßende schließt automatisch)<br />

Terminate<strong>Thread</strong>()<br />

Nicht vorhanden<br />

Nicht vorhanden<br />

Synchronisation<br />

Mutexes<br />

mutex_init()<br />

mutex_destroy()<br />

mutex_lock()<br />

mutex_unlock()<br />

Kritische Bereiche<br />

crit_init()<br />

crit_destroy()<br />

crit_enter()<br />

crit_leave()<br />

Semaphore<br />

sema_init()<br />

sema_destroy()<br />

sema_p()<br />

sema_v()<br />

Ereignisvariable<br />

event_init()<br />

event_destroy()<br />

event_wait()<br />

event_set()<br />

event_reset()<br />

Warten auf mehrere Objekte<br />

Rekursiv, Interprozeß-Synchronisation möglich<br />

CreateMutex()<br />

Letztes CloseHandle() (Prozeßende schließt automatisch)<br />

WaitForSingleObject(), Timeout-Angabe möglich<br />

ReleaseMutex()<br />

Rekursiv<br />

InitializeCriticalSection()<br />

DeleteCriticalSection()<br />

EnterCriticalSection()<br />

LeaveCriticalSection()<br />

Interprozeß-Synchronisation möglich<br />

CreateSemaphore() bzw. OpenSemaphore()<br />

Letztes CloseHandle() (Prozeßende schließt automatisch)<br />

WaitForSingleObject(), Timeout-Angabe möglich<br />

ReleaseSemaphore()<br />

Allgemeine (d.h. manuelle <strong>und</strong> automatische) verfügbar;<br />

Interprozeß-Synchronisation möglich<br />

CreateEvent() bzw. OpenEvent()<br />

Letztes CloseHandle() (Prozeßende schließt automatisch)<br />

WaitForSingleObject(), Timeout-Angabe möglich<br />

SetEvent()<br />

ResetEvent()<br />

WaitForMultipleObjects() statt WaitForSingleObject();<br />

gemischte Objekttypen <strong>und</strong> Timeout-Angabe möglich<br />

Scheduling<br />

getpriority()<br />

setpriority()<br />

GetPriorityClass() <strong>und</strong> Get<strong>Thread</strong>Priority()<br />

SetPriorityClass() <strong>und</strong> Set<strong>Thread</strong>Priority()<br />

5 Zusammenfassung<br />

In diesem Artikel wurden die wesentlichen <strong>Konzepte</strong> <strong>von</strong> <strong>Thread</strong>-Bibliotheken wie <strong>Thread</strong>-<br />

Management, Synchronisationsmittel <strong>und</strong> Scheduling, einige Implementierungsaspekte sowie<br />

Hinweise zur Programmierung mit <strong>Thread</strong>s zusammengefaßt. Anhand der wichtigsten Gesichtspunkte<br />

<strong>und</strong> Funktionalität wurden anschließend einige gängige <strong>Thread</strong>-Systeme, die heute auf<br />

Arbeitsplatzrechnern verfügbar sind, einander gegenübergestellt. Dabei zeigten sich im Detail doch<br />

erhebliche Unterschiede zwischen den verschiedenen <strong>Systemen</strong>, die neuen Einarbeitungsaufwand<br />

beim Wechsel zu einem anderen Betriebs- oder <strong>Thread</strong>-System <strong>und</strong> Sorgfalt bei der Programmierung<br />

erfordern. Besonders auffällig sind die Unterschiede bei den zur Verfügung gestellten<br />

Synchronisationsmechanismen <strong>und</strong> deren Implementierungen.<br />

Dies zeigt, daß sich die <strong>Konzepte</strong> <strong>von</strong> <strong>und</strong> die Programmierung mit <strong>Thread</strong>s noch in Entwicklung<br />

befinden. Auch mit dem POSIX-<strong>Thread</strong>s-Standard [IEEE 96] dürfte hier noch kein Ende erreicht sein.<br />

Nicht berücksichtigt in dem <strong>Vergleich</strong> sind mögliche Leistungsunterschiede der betrachteten <strong>Thread</strong>-<br />

Bibliotheken. Es ist zu erwarten, daß sich auch diesbezüglich signifikante Unterschiede ergeben.<br />

22

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!