//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); } }
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); } }