9Fermer11
ZerosquareLe 11/05/2019 à 22:50
Artemis (./9) :
Finalement j'ai utilisé SendNotifyMessageA (qui n'est pas bloquant), avec un paramètre WM_USER a la fin de mon thread, et je traite ce message dans ma fenêtre pour réactiver les boutons nécessaires.
Si tu veux du non bloquant, le plus simple est PostMessage() (mais SendNotifyMessage() semble faire la même chose si le destinataire du message est dans un autre thread).

Par contre, utilise WM_APP plutôt que WM_USER. Même si la doc n'est pas très claire sur le sujet, il semble que ce soit cette valeur qu'il faille utiliser pour les messages privés dans les applications, et j'ai déjà eu un bug qui était causé par l'utilisation de WM_USER à la place.

Artemis (./9) :
J'imagine que ce n'est pas tellement le fait que ça soit une variable globale qui pose problème, puisque même si je passe l'adresse d'une structure globale en paramètre de la fonction thread, ça ne changera rien, c'est plutôt l'accès concurrentiel aux données qui pose soucis ?
Oui c'est ça : pour faire simple, les accès mémoire ne sont pas toujours faits immédiatement, ni forcément dans l'ordre auquel on s'attend. Donc si tu as besoin que ces effets soient visibles de façon certaine en-dehors de ton thread, il faut des memory barriers.