Dans une fonction appelée Record, je crée un thread. Laissez la fonction thread être appelée ThreadFn. Je veux que Record attende jusqu'à ce qu'un bloc de code dans ThreadFn commence à partir du début de ThreadFn. Comment est-ce que je fais ceci? J'ai essayé avec Mutex. Mais je ne suis pas sûr où mettre CreateMutex et où mettre ReleaseMutex.Comment faire qu'un thread attende la fin d'une partie d'un autre thread?
J'ai essayé ce qui suit. Mais ça ne fonctionne pas. Avoir une variable globale
HANDLE ghMutex = NULL;
intérieur ThreadFn: Au début
ghMutex = CreateMutex(NULL, FALSE, NULL);
Lorsque le bloc de code a terminé, puis
ReleaseMutex(ghMutex);
enregistrement Intérieur:
Create the thread
WaitForSingleObject(ghMutex, INFINITE);
Close thread handle
CloseHandle(ghMutex);
Ne fonctionne pas. L'appelant n'attend pas. – Avinash
Pourquoi les développeurs essayent-ils continuellement d'abuser du mutex? Si vous voulez signaler l'autre thread, utilisez un objet synchro approprié. Recherchez "Evénement" et/ou "Sémaphore". L'un ou l'autre fera ce que vous semblez vouloir. Un mutex est juste le mauvais objet à utiliser pour cela. – ThingyWotsit
@ThingyWotsit Pourquoi devez-vous être condescendant? Il affiche clairement cette question pour une raison. Soit il se limite à utiliser seulement un mutex, soit il ne connaissait pas 'Event' et/ou 'Semaphore'. –