PureBasic - Thread

Einleitung

Ein Thread (auch "Teilprozess") ist ein Programmteil, welcher asynchron, d.h. im Hintergrund des Hauptprogramms, läuft. Dies bedeutet: es ist möglich, langwierige Operationen (Packen, Bildverarbeitung...) durchzuführen, ohne das gesamte Programm anzuhalten und damit dem Benutzer das Weiterarbeiten zu ermöglichen. Ein Thread läuft innerhalb Ihres Programms, es ist kein weiterer Prozess. Wenn das Hauptprogramm beendet wird, werden alle Threads zerstört. Unter PureBasic sind Threads einfach eine Prozedur, welche asynchron aufgerufen wird. Der Thread läuft, bis die Prozedur endet.

Beispiele für Einsatzmöglichkeiten von Programmen - bei denen Threads sinnvoll sind - bestehen z.B. darin, wenn Sie verschiedene Situationen mit verschiedenen Antwortzeiten oder Situationen, die in verschiedenen Intervallen auftreten, handhaben müssen. Um auf den vorigen Absatz zurückzukommen: die Antwortzeiten der eigentlichen Bild-Verarbeitung und der Benutzeroberfläche sind ziemlich verschieden (Sie können auf die Verarbeitung des Bildes warten, haben aber gleichzeitig eine reagierende Benutzerschnittstelle).

PureBasic hat eine spezielle Compiler-Einstellung, um threadsichere Executable zu erstellen. (/THREAD Kommandozeilen-Option oder "Erstelle threadsicheres Executable" in den IDE-Optionen.) Ohne diesen Modus sind bestimmte Funktionen (und auch der String-Zugriff) schneller, aber nicht sicher zur Verwendung in Threads. Es ist dennoch möglich, Threads ohne diesen Modus zu erstellen, aber nicht empfehlenswert, da selbst eine einfache Sache wie der lokale Zugriff auf Strings gefährlich sein kann und geschützt werden muss. Das Aktivieren dieser Option macht diese Dinge sicher innerhalb von Threads, geht jedoch zu Lasten von etwas Geschwindigkeit. Die Entscheidung, ob Threads verwendet werden oder nicht, sollte mit Bedacht gefällt werden, und der Thread-Modus sollte nur dann verwendet werden, wenn wirklicher Bedarf dafür besteht.

Hinweis: Threads müssen vorsichtig benutzt werden, da es möglich ist, dass Sie gleichzeitigen Zugriff auf geteilte (shared) Ressourcen (Speicher, Variablen, Dateien, etc.) haben und Sie dann manuell sicherstellen müssen, deshalb nicht in Konflikte zu geraten. Die Mutex-Befehle in dieser Library können verwendet werden, um den Zugriff auf solche geteilten Ressourcen zu synchronisieren.

Mittels des Threaded Schlüsselworts ist es möglich, thread-basierte beständige Objekte (Variablen, Arrays, verknüpfte Listen, Maps) zu erstellen.

Hinweis: Benutzen Sie innerhalb von Threads kein DirectX (MS Windows Einschränkung)! Wenn Sie auf Grafikdarstellung in Threads angewiesen sind, verwenden Sie stattdessen Images und 2DDrawing.

Befehlsübersicht

CreateMutex
CreateSemaphore
CreateThread
FreeMutex
FreeSemaphore
IsThread
KillThread
LockMutex
PauseThread
ResumeThread
SignalSemaphore
ThreadID
ThreadPriority
TryLockMutex
TrySemaphore
UnlockMutex
WaitSemaphore
WaitThread

Beispiel

Thread.pb

Unterstützte OS

Alle

Referenz-Handbuch - Inhaltsverzeichnis