Page 1 sur 1

UserLib Thread-Safe

Publié : ven. 27/oct./2017 16:29
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.

...

Re: UserLib Thread-Safe

Publié : ven. 27/oct./2017 18:31
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 :)

Re: UserLib Thread-Safe

Publié : sam. 28/oct./2017 15:34
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+