Example #1
0
//acao do filósofo
void *filosofo(void *j){
	int i= *(int*) j;
	while(1){  
    	pensar(i);
    	pegarGarfo(i);
    	comer(i);
    	devolverGarfo(i);
	}
}
bool fantasmaThread::qt_invoke( int _id, QUObject* _o )
{
    switch ( _id - staticMetaObject()->slotOffset() ) {
    case 0: comer((pacmanThread*)static_QUType_ptr.get(_o+1)); break;
    case 1: setVelocidad((int)static_QUType_int.get(_o+1)); break;
    default:
	return Fantasma::qt_invoke( _id, _o );
    }
    return TRUE;
}
void filosofo(int id) {
	while (1 == 1) {
		pensar();
		down(&mutex);
		pegar_garfo(id);
		pegar_garfo(DIREITA);
		comer();
		largar_garfo(id);
		largar_garfo(DIREITA);
		up(&mutex);
	}
	}
Example #4
0
void *filosofo(void *num){
	long id = (long) num;
	long palito_esq = id;
	long palito_dir = (id + 1) % NUM_FIL;


	while(1){
		meditar();

		if(id == 0){
			pegarPalito(id, palito_dir);
			pegarPalito(id, palito_esq);
		}
		else {
			pegarPalito(id, palito_esq);
			pegarPalito(id, palito_dir);
		}

		comer(id);
		soltarPalito(id, palito_esq);
		soltarPalito(id, palito_dir);
	}
}