Suppression de la sémaphore globale
This commit is contained in:
parent
96f0f537ed
commit
6ad5d67c7d
@ -30,10 +30,9 @@ int main( int argc, char **argv)
|
||||
if(argc < 2) { printf("Usage : %s nSHM \n", argv[0]); exit(EXIT_FAILURE); }
|
||||
|
||||
int shmid, shm_key, i = 0;
|
||||
int mutex_data, mutex_tpa, mutex_glob;
|
||||
int mutex_data, mutex_tpa;
|
||||
key_t sem_key_data = MUTEX_DATA;
|
||||
key_t sem_key_tpa = MUTEX_TPA;
|
||||
key_t sem_key_glob = MUTEX_GLOB;
|
||||
|
||||
shm_key = (key_t) atoi(argv[1]);
|
||||
MEMP * memoireP;
|
||||
@ -63,9 +62,6 @@ int main( int argc, char **argv)
|
||||
if((mutex_tpa = creat_sem( sem_key_tpa, 1)) == -1)
|
||||
{ perror("creat_sem"); exit(EXIT_FAILURE); }
|
||||
|
||||
if((mutex_glob = creat_sem( sem_key_glob, 1)) == -1)
|
||||
{ perror("creat_sem"); exit(EXIT_FAILURE); }
|
||||
|
||||
temp.tete = 0;
|
||||
temp.queue = 0;
|
||||
|
||||
@ -130,7 +126,6 @@ int main( int argc, char **argv)
|
||||
|
||||
if(mutex_data >= 0) { del_sem(sem_key_data); }
|
||||
if(mutex_tpa >= 0) { del_sem(sem_key_tpa); }
|
||||
if(mutex_glob >= 0) { del_sem(sem_key_glob); }
|
||||
|
||||
endwin() ;
|
||||
exit(EXIT_SUCCESS);
|
||||
|
@ -2,6 +2,5 @@
|
||||
#define NVIDE 2
|
||||
#define MUTEX_TPA 3 // Pour le tableau de producteurs
|
||||
#define MUTEX_DATA 4 // Pour les données
|
||||
#define MUTEX_GLOB 10 // Pour pouvoir entrer dans la liste des producteurs actifs
|
||||
#define MAX_PROD 5 // Maximum de producteurs
|
||||
#define MAX_BUF 100 // Taille maximale du buffer
|
||||
|
@ -18,7 +18,7 @@ int main( int argc, char **argv)
|
||||
{
|
||||
if(argc < 2) { printf("Usage %s numIPC\n", argv[0]); exit(EXIT_FAILURE); }
|
||||
MEMP *memoireP;
|
||||
int mutex_data, mutex_tpa, sem_global, i=0;
|
||||
int mutex_data, mutex_tpa, i=0;
|
||||
char c;
|
||||
const char CTRL_D = 4 ;
|
||||
int shmid;
|
||||
@ -32,7 +32,6 @@ int main( int argc, char **argv)
|
||||
cbreak() ; /* lecture non bufferisee */
|
||||
|
||||
key_t sem_key_data = MUTEX_DATA;
|
||||
key_t sem_key_glob = MUTEX_GLOB;
|
||||
key_t sem_key_tpa = MUTEX_TPA;
|
||||
|
||||
shmid = shmget(shm_key, sizeof(MEMP), 0766 | IPC_CREAT);
|
||||
@ -42,10 +41,7 @@ int main( int argc, char **argv)
|
||||
if((memoireP = (MEMP *) shmat(shmid, 0 , 0766)) ==(void *) -1) { perror("shmat"); exit(EXIT_FAILURE); }
|
||||
if((mutex_data = open_sem( sem_key_data)) == -1) { perror("open_sem"); exit(EXIT_FAILURE); }
|
||||
if((mutex_tpa = open_sem( sem_key_tpa)) == -1) { perror("open_sem"); exit(EXIT_FAILURE); }
|
||||
if((sem_global = open_sem( sem_key_glob)) == -1) { perror("open_sem"); exit(EXIT_FAILURE); }
|
||||
|
||||
// sem_global est un sémaphore à MAX_PROD entrants.
|
||||
//P(sem_global);
|
||||
P(mutex_tpa);
|
||||
for(i = 0; i < MAX_PROD && memoireP->tpa[i] != -1 ; i++);
|
||||
if(memoireP->tpa[i] != -1) { V(mutex_tpa); exit(EXIT_FAILURE); }
|
||||
@ -84,9 +80,6 @@ int main( int argc, char **argv)
|
||||
memoireP->tpa[i] = -1;
|
||||
V(mutex_tpa);
|
||||
|
||||
// On a fini, on libère l'accès à un autre producteur
|
||||
//V(sem_global);
|
||||
|
||||
endwin();
|
||||
|
||||
// On libère la mémoire de façon propre
|
||||
|
Loading…
Reference in New Issue
Block a user