Oups! J'ai mal lu.
Edit: Aie! Cette partie est fausse:Donc, tu réserves un sémaphore dans un thread et tu tentes de le faire libérer par un autre ---> Echec: La réservation est locale à un thread. Le second thread ne peut rien libérer du tout, puisqu'il ne possède pas l'unité.
Et avec un mutex, ça foirerait pareil.
Edit: La bonne raison de l'échec, c'est que tu utilises des CSingleLock sur ton sémaphore alors que ce n'est pas approprié ici. Un CSingleLock ne libère que ce qu'il a lui-même acquis, et le libère en toutes circonstances lors de sa desctuction. C'est une classe RAII, il sert à ça.
Avec un CSingleLock mutex, ça foirerait pareil.
Avec un event (et surtout pas de CSingleLock) ça devrait mieux passer...
Partager