int main() { int x = 0; mcreate(0, func0, (void *) &x); x++; printf("Sou a main após criar a thread 0, com x = %d\n", x); myield(); mcreate(0, func1, (void *) &x); x++; myield(); x++; myield(); exit(0); }
void *func1(void *arg) { printf("Sou a thread 1 imprimindo %d\n", *((int *) arg)); myield(); printf("Sou a thread 1, agora imprimindo %d\n", *((int *) arg)); return NULL; }
void print_thread_mutex(thread_t* t){ printf("Thread: %d, prio: %d - iniciando.\n", t->id, t->prio); mlock(&mutex); printf("Thread: %d, prio: %d - entrou no mutex.\n", t->id, t->prio); myield(); munlock(&mutex); printf("Thread: %d, prio: %d - saiu do mutex.\n", t->id, t->prio); }
void *func(void *arg){ while ( inc < MAX_SIZE ) { vetor[inc] = (int)arg; inc++; if ( (inc % 20) == 0 ) myield(); else continue; } return (NULL); }
void *func(void *arg){ printf("Starting func... remaining threads: %d\n", sizeOf(ready1)); while ( inc < MAX_SIZE ) { vetor[inc] = (int)arg; inc++; if ( (inc % 20) == 0 ) myield(); else continue; } return (NULL); }
void *makeWork() { myield(); while(workDone < MAX_WORK) { mlock(&mutex); lastWork = workDone; workDone++; munlock(&mutex); if (workDone <= lastWork || workDone -1 != lastWork) { puts("Mutual Exclusion error!!!!!!!"); printf("%d -> %d\n", lastWork, workDone); exit(0); } if (workDone < MAX_WORK) { printf("Work #%d done.\n", workDone); myield(); } } return (NULL); }
int main(int argc, char *argv[]) { int id0, id1, id2; int i; id0 = mcreate(0, func0, (void *)&i); id1 = mcreate(0, func1, (void *)&i); id2 = mcreate(0, func1, (void *)&i); printf("Eu sou a main após a criação de tid=%d e tid=%d e tid=%d\n",id0,id1,id2); myield(); printf("Eu sou a main voltando para terminar o programa\n"); }