Bonjour,

Voilà je développe une fonction qui peut être appelée par plusieurs threads, mais je souhaite qu'un seul thread à la fois l'exécute pour éviter tout plantage, alors je décide d'utiliser CreateMutex, ReleaseMutex, CloseHandle et WaitForSingleObject pour faire cela mais je sais pas très bien où les employer dans ma fonction.
Est-ce que comme cela ça convient ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
int ma_fonction()
{
    HANDLE hMutex;
    DWORD dwWaitMutex;
    hMutex=CreateMutex(NULL, FALSE, L"mon_mutex");
    if(hMutex==NULL)
    {
        printf("Error while creating mutex handle");
        return 0;
    }
    /* Test si le handle de mutex existe déjà */
    if(GetLastError()==ERROR_ALREADY_EXISTS)
    {
        /* on attend qu'il soit libéré */
        dwWaitMutex=WaitForSingleObject(hMutex,INFINITE);
    }
    // Section critique
    // appel de ma fonction à protéger
    // Fin section critique
 
    ReleaseMutex(hMutex);
    CloseHandle(hMutex);
    return 1;
}