int main() { int i; thread_t t[N_THREADS]; mmutex_init(&mutex); printf("munlock executado antes de iniciar escalonador retorna %d.\n", munlock(&mutex)); printf("Main criando %d threads...\n", N_THREADS); for (i = 0; i < N_THREADS; i++) { t[i].prio = 1; t[i].id = mcreate(1, (void *(*)(void*)) &print_thread_mutex, &t[i]); } printf("munlock executado com mutex livre retorna %d\n", munlock(&mutex)); printf("Main esperando as threads...\n"); for (i = 0; i < N_THREADS; i++) { mwait(t[i].id); } printf("Fim da funcao main...\n"); return 0; }
int main () { int ids[MAX_THREADS]; int i = 0; puts ("Started."); mmutex_init(&mutex); for (i=0; i < MAX_THREADS; i++) { ids[i] = mcreate(2,&makeWork, NULL); printf("Thread using TID %d started working...\n", ids[i]); } for (i=0; i < MAX_THREADS; i++) { mwait(ids[i]); printf("Thread using TID %d finished.\n", ids[i]); } exit(0); }