Konzepte und funktionaler Vergleich von Thread-Systemen
Konzepte und funktionaler Vergleich von Thread-Systemen
Konzepte und funktionaler Vergleich von Thread-Systemen
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