PureBasic - Thread

Généralités

Un thread est une partie d'un programme qui peut être lancée de manière asynchrone en arrière plan du programme. Cela signifie qu'il est possible d'effectuer certaines opérations longues (compression, manipulation d'images ...) sans interrompre l'ensemble du programme, et de laisser ainsi l'utilisateur effectuer d'autres tâches. Un thread s'exécute à l'intérieur du programme, il ne s'agit pas d'un autre processus. Lorsque le programme se termine, tous les threads sont détruits. Sous PureBasic, les threads sont des procédures appelées de manière asynchrone. Un thread tourne jusqu'à ce que la procédure se termine.

PureBasic a une option spéciale de compilation pour créer des exécutables multi-threadés (Le switch /THREAD pour le compilateur en ligne de commande ou l'option "Créer un exécutable multi threadé" dans les options de compilation de l'IDE). Sans cette option, certaines fonctions (ainsi que la gestion des strings) sont plus rapides, mais inutilisables dans les threads. Il est toujours possible de créer des threads sans être dans ce mode, mais ce n'est pas recommandé, car même une simple manipulation de chaîne de caractères dans un thread peut être dangereux et doit être protégé. Activer cette option rend tout cela possible, mais au prix d'une diminution de la rapidité d'exécution. La décision de compiler en mode threadé doit donc être prise uniquement si le besoin s'en fait sentir.

Note: Les threads doivent être utilisés avec précaution, car il est possible que des ressources partagées (mémoire, fichiers, variables etc..) soient accédées au même moment ce qui causera des résultats aléatoires. Les commandes relatives aux 'Mutex' peut être utilisées pour synchroniser ces ressources partagées.

Note: Ne pas utiliser DirectX dans un Thread ! C'est une limitation de MS Windows. Si vous avez besoin d'afficher des graphiques dans des Thread alors utiliser les bibliothèques Images et 2DDrawing.

Sommaire des commandes

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

Exemple

Thread.pb

OS Supportés

Tous

Guide de référence - Index