Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420

    [C] problema produttore - consumatore su questo codice

    Salve a tutti,
    ho un problema con questi due codici: entrambi usano i semafori posix per implementare il problema del produttore e consumatore ma è come se questi tipi di semafori non funzionassero. Ho provato a crearli in due modi diversi ma il problema è rimasto.

    questo è il primo modo: http://rafb.net/p/Jk1tnh75.html
    questo è il secondo: http://rafb.net/p/7k783e46.html

    in entrambi, il problema penso che si trovi qua:
    codice:
    void scrivi_su_buffer(struct pos item)
    {
    	Lock_Wait(empty);
    	Lock_Wait(mutex_buffer);
    	bufferpointer->buffer[bufferpointer->buffer_scrittura] = item;
    	bufferpointer->buffer_scrittura = (bufferpointer->buffer_scrittura + 1) % DIM_BUFFER;
    	Unlock_Signal(mutex_buffer);
    	Unlock_Signal(full);
    }
    
    
    struct pos leggi_da_buffer(void)
    {	
    	struct pos item;
    
    	Lock_Wait(full); 
    	Lock_Wait(mutex_buffer);
    	item = bufferpointer->buffer[bufferpointer->buffer_lettura];
    	bufferpointer->buffer_lettura = (bufferpointer->buffer_lettura + 1) % DIM_BUFFER;
    	Unlock_Signal(mutex_buffer);
    	Unlock_Signal(empty);
    
    	return item;
    }
    è come se non funzionasse la lock su full.

    Ho messo un contatore sulla funzione disegna per vedere quante iterazioni usava ed in pratica risulta che il processo non si blocca sulla wait..
    the sALIEN

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420
    è come se i semafori fossero non bloccanti ma da quel che so per far ciò sarebbe necessario specificare IPC_NOWAIT all'atto della creazione, cosa che non ho fatto..

    per la creazione ho usato questo codice:
    codice:
    if ((empty = semget(empty_t, 1, IPC_CREAT | IPC_EXCL | WMODE)) == (-1))
    	printf("Errore semaforo empty\n");
    dovrebbe essere esatto giusto?
    the sALIEN

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420
    up
    the sALIEN

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.