C/Visual C - FILOSOFOS CON SEMAFOROS

 
Vista:

FILOSOFOS CON SEMAFOROS

Publicado por CHOCOLO (1 intervención) el 03/06/2005 04:42:54
POR FAVOR, NESESITO ALGUN EJEMPLO EN C DE LA CENA DE LOS FILOSOFOS CON SEMAFOROS, ME URGE POR FAVOR

SE LES AGRADECERIA SI LO MANDAN AL CORREO
[email protected]

GRACIAS : )
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:FILOSOFOS CON SEMAFOROS

Publicado por Jacqueline (2 intervenciones) el 03/06/2005 16:34:56
#define N 5 /* Number of philosphers */
#define RIGHT(i) (((i)+1) %N)
#define LEFT(i) (((i)==N) ? 0 : (i)+1)
typedef enum { THINKING, HUNGRY, EATING } phil_state;
phil_state state[N];
semaphore mutex =1;
semaphore s[N]; /* one per philosopher, all 0 */
void get_forks(int i) {
state[i] = HUNGRY;
while ( state[i] == HUNGRY ) {
P(mutex);
if ( state[i] == HUNGRY &&
state[LEFT] != EATING &&
state[RIGHT(i)] != EATING ) {
state[i] = EATING;
V(s[i]);
}
V(mutex);
P(s[i]);
}
}
void put_forks(int i) {
P(mutex);
state[i]= THINKING;
if ( state[LEFT(i)] == HUNGRY ) V(s[LEFT(i)]);
if ( state[RIGHT(i)] == HUNGRY) V(s[RIGHT(i)]);
V(mutex);
}
void philosopher(int process) {
while(1) {
think();
get_forks(process);
eat();
put_forks();
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar