Keys - Thread-spezifische Daten
Submitted by rac on 13 January, 2008 - 16:22.
- Threads rufen Routinen auf
- Routinelokale Daten kommen und gehen
- Alternativen
- Routine Pointer auf Daten übergeben
- globale Variablen
- selbst hacken mit pthread_self
- Bibliothek
- hat interne Daten
- umschreiben auf MT
- API bleibt gleich
- hat jetzt Threadspezifische interne Daten
Key
- eine Art Pointer
- wenn dieser Pointer von einem Thread verwendet wird, zeigt er jedes Mal auf die Threadeigenen Daten
Alternativen
- open gibt connection ID zurück
- recieve, send (id, ...)
- API wechselt
- Kapselung, Abstraktion?
- Array auf Heap anlegen und mit pthread_self referenzieren
- entweder hässlich oder rel. Aufwendig
Anwendungsbeispiele
- Modul für Speicher oder File Management
- Profiling Modul
- Exception Manager
- speichert Ort an den bei einer Exception gesprungen werden soll
- Zufallszahlen Generator
Generell
- Bibliotheken oder Routinen mit internem Zustand
- Kontext soll nicht als Parameter übergeben werden
- üblicherweise wird Kontext in single threaded Programmen als static declariert
- bei nichtBibliotheken sind Keys nicht unbedingt vorteilhaft
- globale Variablen
- Key kann auch direkt per pthread_key_delete wieder gelöscht werden.
»
- Printer-friendly version
- Download PDF
- 1762 reads

Post new comment