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
| 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 |
| Feld | Typ |
|---|---|
id | int64 |
handle | int64 |
running | int64 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |