Inhaltsverzeichnis

std.thread

POSIX-Threads (pthread) mit Lyx-Wrapper-Typen: Thread (ThreadCreate, ThreadJoin, ThreadExit), Mutex (rekursiv-sichere Sperre mit MutexLock/MutexUnlock), Cond (Bedingungsvariablen für Producer/Consumer, CondWait/CondSignal), TLSKey (Thread-Local-Storage für pro-Thread-Daten), SharedMem (anonymes Shared Memory über mmap) und Atomic (atomarer int64-Wert mit AtomicAdd und Compare-And-Swap CAS).

Einsatzbereiche: parallele Server (Thread-Pool), Worker-Queues, nebenläufige Datenverarbeitung, Lock-freie Algorithmen.

Autor: Andreas Röne
Copyright: 2024-2025 Andreas Röne


Imports


Externe Funktionen

Signatur Beschreibung
pthread_mutex_init(mutex: int64, attr: int64): int64 Initialisiert POSIX-Mutex
pthread_mutex_lock(mutex: int64): int64 Sperrt POSIX-Mutex
pthread_mutex_unlock(mutex: int64): int64 Gibt POSIX-Mutex frei
pthread_mutex_destroy(mutex: int64): int64 Zerstört POSIX-Mutex
pthread_exit(code: int64): void Beendet aktuellen Thread
_exit(code: int64): void Beendet Prozess sofort
getpid(): int64 Gibt aktuelle Prozess-ID zurück

Typen

Thread (struct)

Feld Typ
id int64
handle int64
running int64

Funktionen

Signatur Sichtbarkeit Beschreibung
ThreadCreate(func: int64, arg: int64): Thread pub Erstellt und startet neuen Thread
ThreadSelf(): int64 pub Gibt Handle des aktuellen Threads zurück
ThreadIsRunning(thread: Thread): bool pub Prüft ob Thread noch läuft
ThreadJoin(thread: Thread): int64 pub Wartet auf Thread-Ende
ThreadExit(code: int64): void pub Beendet aktuellen Thread mit Code
pthread_cond_init(cond: int64, attr: int64): int64 Initialisiert POSIX-Bedingungsvariable
pthread_cond_wait(cond: int64, mutex: int64): int64 Wartet auf Bedingungsvariable
pthread_cond_signal(cond: int64): int64 Signalisiert einen wartenden Thread
pthread_cond_broadcast(cond: int64): int64 Signalisiert alle wartenden Threads
pthread_cond_destroy(cond: int64): int64 Zerstört Bedingungsvariable

Mutex (struct)

Feld Typ
lock int64
owner int64
count int64
Signatur Sichtbarkeit Beschreibung
MutexInit(): Mutex pub Erstellt und initialisiert neuen Mutex
MutexLock(mutex: Mutex): int64 pub Sperrt Mutex (rekursiv-sicher)
MutexUnlock(mutex: Mutex): int64 pub Gibt Mutex frei

Cond (struct)

Feld Typ
signal int64
Signatur Sichtbarkeit Beschreibung
CondInit(): Cond pub Erstellt neue Bedingungsvariable
CondWait(cond: Cond, mutex: Mutex): int64 pub Wartet auf Signal an Bedingungsvariable
CondSignal(cond: Cond): int64 pub Weckt einen wartenden Thread auf
pthread_key_create(key: int64, destructor: int64): int64 Erstellt TLS-Schlüssel mit Destruktor
pthread_key_delete(key: int64): int64 Löscht TLS-Schlüssel
pthread_getspecific(key: int64): int64 Liest Thread-lokalen Wert
pthread_setspecific(key: int64, value: int64): int64 Setzt Thread-lokalen Wert

TLSKey = int64

Signatur Sichtbarkeit Beschreibung
TLSKeyCreate(): TLSKey pub Erstellt neuen Thread-Local-Storage-Schlüssel
TLSSetValue(key: TLSKey, value: int64): int64 pub Setzt Thread-lokalen Wert
TLSGetValue(key: TLSKey): int64 pub Liest Thread-lokalen Wert

SharedMem (struct)

Feld Typ
data int64
size int64
Signatur Sichtbarkeit Beschreibung
SharedMemCreate(size: int64): SharedMem pub Erstellt anonymes Shared-Memory-Segment
SharedMemFree(mem: SharedMem): int64 pub Gibt Shared-Memory-Segment frei

Atomic (struct)

Feld Typ
value int64
Signatur Sichtbarkeit Beschreibung
AtomicInit(initial: int64): Atomic pub Initialisiert atomaren Wert
AtomicAdd(atomic: Atomic, delta: int64): int64 pub Addiert Wert atomar, gibt Ergebnis zurück
CAS(atomic: Atomic, oldVal: int64, newVal: int64): int64 pub Compare-And-Swap atomar ausführen