Ti ringrazio molto.
quindi un codice di questo tipo
codice:
globale:
a=TRUE;
b=FALSE;
Thread 1:
while (TRUE){
WaitForSingleObject(a,INFINITE);
usaRisorsaCondivisa();
ReleaseMutex(b);
}
Thread 2:
while(TRUE){
WaitForSingleObject(b,INFINITE);
usaRisorsaCondivisa();
ReleaseMutex(a);
}
Dovrebbe permettere ai due thread di accedere alternativamente ad una risorsa.
Però ho osservato che la cosa non succede , almeno in questo codice, perché?
codice:
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
DWORD WINAPI concurrent (void *);
HANDLE b,
a,
conc;
int id;
LPDWORD ID=(LPDWORD)&id;
int main (){
char c=' ';
b=CreateMutex(NULL,TRUE,"b");
a=CreateMutex(NULL,FALSE,"a");
conc = CreateThread(NULL,0,concurrent,NULL,0,ID);
if (conc==NULL)
printf("creazione thread fallita\n");
while (TRUE){
WaitForSingleObject(a,INFINITE);
printf ("a\n");
ReleaseMutex(b);
}
return 0;
}
DWORD WINAPI concurrent (void * dati){
printf ("inizio TRUE=%d\n",TRUE);
while (TRUE){
WaitForSingleObject(b,INFINITE);
printf ("b\n");
ReleaseMutex(a);
}
}