Forum de la communauté SFML

Aide => Système => Discussion démarrée par: Macrob le Mai 16, 2015, 08:21:54 pm

Titre: [Résolu] Peut-on savoir quel sf::Thread est en train d'utiliser une fonction?
Posté par: Macrob le Mai 16, 2015, 08:21:54 pm
Bonjour à tous,

Juste une question très simple, je présente mes excuses si la réponse est évidente mais je n'ai pas trouvé.

Imaginons qu'on a 2 sf::Thread : thread1 et thread2, et une fonction, function1. Les deux threads peuvent utiliser function1 (avec un mutex bien sûr). Y-a-t-il moyen de savoir quel thread est en train de l'utiliser ?

Merci d'avance pour votre aide
Titre: Re : Peut-on savoir quel sf::Thread est en train d'utiliser une fonction?
Posté par: Laurent le Mai 16, 2015, 09:07:16 pm
Pas aussi facilement que si tu utilisais std::thread.
Titre: Re : Peut-on savoir quel sf::Thread est en train d'utiliser une fonction?
Posté par: Macrob le Mai 16, 2015, 09:13:41 pm
Mince ! "Pas aussi facilement", ça veut dire qu'il y aurait quand même un moyen ? Si c'est trop compliqué à expliquer pas de souci  :D
Titre: Re : Peut-on savoir quel sf::Thread est en train d'utiliser une fonction?
Posté par: Laurent le Mai 17, 2015, 07:22:45 am
La solution simple mais pas toujours adaptée : tu peux passer un paramètre supplémentaire à ta fonction, qui identifie le thread qui l'a appelé.

Sinon, pour une solution non-intrusive, il faut utiliser une variable locale de thread (sf::ThreadLocalPtr), à laquelle tu donnes une valeur différente dans chaque thread, et que tu testes dans la fonction.

Mais là encore, si ton compilo n'est pas préhistorique, utilise plutôt les équivalents qui sont disponibles dans la bibliothèque standard.
Titre: Re : Peut-on savoir quel sf::Thread est en train d'utiliser une fonction?
Posté par: Macrob le Mai 17, 2015, 10:29:25 am
Je ne connaissais pas sf::ThreadLocalPtr, merci beaucoup !
Je mets la discussion comme résolue merci Laurent  :D