Ce n'est pas particulièrement simple. Ce qui suit est un lien vers un article de Douglas Schmidt (qui est aussi en grande partie responsable des bibliothèques ACE) qui détaille plusieurs approches pour implémenter des variables de condition sous Windows en utilisant les primitives de synchronisation disponibles dans Win32 (pré-Vista). Les approches comprennent l'utilisation des primitives de base, généralement disponibles sur n'importe quel système d'exploitation, et discutent des diverses limitations de ces approches :
La ligne de fond (remarques finales) :
Cet article illustre pourquoi le développement de variables de condition sur les plateformes Win32 est délicat et source d'erreurs. Il existe plusieurs forces de conception subtiles qui doivent être prises en compte par les développeurs. En général, les différentes implémentations que nous avons examinées varient en fonction de leur exactitude, efficacité, équité et portabilité. Aucune solution ne fournit toutes ces qualités de manière optimale.
El SignalObjectsAndWait
La solution de la section 3.4 est une bonne approche si l'équité est primordiale. Cependant, cette approche n'est pas aussi efficace que les autres solutions, ni aussi portable. Par conséquent, si l'efficacité ou la portabilité sont plus importantes que l'équité, l'approche de la SetEvent
L'approche décrite à la section 3.2 pourrait être plus appropriée. Naturellement, la solution la plus simple serait que Microsoft fournisse simplement des variables de condition dans l'API Win32.
Notez qu'à partir de Vista, Windows prend en charge les variables de condition en utilisant des API natives :