UserLib Thread-Safe

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

UserLib Thread-Safe

Message par falsam »

Finalement je ne sais plus ce que veut dire compiler une bibliothèque utilisateur avec le mode Thread-Safe.

C'est le constat que je fais en lisant ce dernier commentaire de zaphod_b à propos de MiniLib.
zaphod_b a écrit :3/ des libs qui fonctionnent en thread ou non (threadsafe)
et suite aussi à une discussion sur le chat de Purebasic avec Zorro.

J'avais comme définition qu'une compilation Thread-Safe permettait d'utiliser les routines thread-safe (Mutex Semaphore and co ...) dans une bibliothèque.

Ce qui veut dire aussi qu'un code appelant une bibliothèque utilisateur créer avec ce mode Thread-Safe pouvait fonctionner qu'avec une option de compilation Thread exclusivement.
PureBasic Aide a écrit : ...

-t, --thread, /THREAD: utilise les routines thread-safe pour toutes la gestion des chaînes de caractères et pour toutes les commandes.

...
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: UserLib Thread-Safe

Message par Zorro »

tout ça c'est de la sémantique !

pour toi avec MLF seul compte le Flag de compilation /Thread

si une serie de Proceduredll doit etre utilisées dans des Threads alors tu position ce Flag point barre !

si une serie de proceduredll ne doivent pas utiliser de Thread, il ne faut pas positionner ce flag

si une serie de procedureDll doivent etre utilisé en mode Thread, et sans mode Thread

tu positionnes le Flag, et tu nommes tes procedures concerné avec "_Thread"
ET tu copie les meme procedures DLL SANS l'extention "_Thread"

voila comment je vois le truc (il me semble que tu le fait deja bien )


apres , il y a l'historique de Purebasic :

au debut, Purebasic n'avait pas la possibilité des Chaines infinie , une chaine ne devait pas dépasser une longueur
ce qui posait pas mal de probleme, surtout utilisé avec des Threads ... (dépassement de chaine courant )

mais depuis l'arrivée de la bibliothèque Thread de la Version 4.00
Fred a corrigé la longueur des Chaines, elles sont devenues "infinie"
et il a rendu les chaines "ThreadSafe" c'est a dire compatible a l'utilisation dans des Threads

avant ça c’était plantage systématique, et aléatoire .....
(nous utilisions deja les Thread, mais c'etait roulette russe avec les chaines)


bref le Terme "ThreadSafe " a été utilisé par Fred pour nous signaler que dorénavant les chaines ne posaient plus de problèmes
a etre utilisé dans les Threads ....


voila, je pense avoir été clair , en direct du grand livre d'histoire de Purebasic , sous couvert de ma mémoire défaillante


mais pour la petite histoire, le terme "ThreadSafe" signifie qu'un code est compatible (conçut pour) fonctionner avec des Threads

la présence de Mutex et autre Flag du meme genre, n'entre pas en compte la dedans, puisqu'on peut
Threader sans Mutex , ou autre Drapeau ..
car ce n'est pas une obligation

la seul obligation du point de vue code, c'est la présence du Flag "/Thread"
au moment de la compilation :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: UserLib Thread-Safe

Message par PAPIPP »

Bonjours à Tous

Je suis d'accord avec Zorro.

A la suite de la discussion avec G-rom j'ai repris mes notes car avec l'age si l'on ne pratique pas souvent on oublie.
et la programmation mutithread n'est pas quotidienne même pas annuelle alors ...
Le multithrad est est assez compliqué et les divers conflits sont nombreux. les solutions pour les résoudre sont elles aussi nombreuses et certaines difficiles à trouver et à mettre en œuvre.
C'est pourquoi ce que propose Zorro est correct. c'est surtout au concepteur de se débrouiller.

et merci encore à falsam pour le produit MLF.

A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Répondre