int main(int argc, char **argv) { printf("Tester for stage 2. Uses semaphores and mutex locks.\n"); srandom(time(NULL)); ta_libinit(); int i = 0; int nrw = 5; data = (int *)malloc(sizeof(int) * DATALEN); assert(data); memset(data, 0, sizeof(int)*DATALEN); datalen = DATALEN; ta_sem_init(&readersem, 0); ta_sem_init(&writersem, DATALEN); ta_lock_init(&rmutex); ta_lock_init(&wmutex); ta_create(killerthr, (void *)i); for (i = 0; i < nrw; i++) { ta_create(reader, (void *)i); ta_create(writer, (void *)i); } int rv = ta_waitall(); assert(rv==0); ta_sem_destroy(&readersem); ta_sem_destroy(&writersem); ta_lock_destroy(&rmutex); ta_lock_destroy(&wmutex); free(data); return 0; }
int main(int argc, char **argv) { ta_libinit(); shared_data_t shared_data; int i; srandom(time(NULL)); memset(&shared_data, 0, sizeof(shared_data_t)); ta_sem_init(&shared_data.atTableSem, 1); for (i = 0 ; i < NPHILOSOPHERS; i++) { ta_sem_init(&shared_data.chopstickSem[i], 1); } ta_create(killerthr, (void*)&shared_data); for (i = 0; i < NPHILOSOPHERS; i++) { ta_create(philosophize, (void *)&shared_data); } int rv = ta_waitall(); assert(rv < 0); return 0; }
int main(int argc, char **argv) { ta_libinit(); int i; shared_data_t shared_data; srandom(time(NULL)); memset(&shared_data, 0, sizeof(shared_data_t)); for (i = 0 ; i < BUFFERSIZE; i++) { shared_data.buffer[i] = 0xFEEDFEED; } ta_sem_init(&shared_data.emptyBuffer, BUFFERSIZE); ta_sem_init(&shared_data.fullBuffer, 0); ta_create(killerthr, (void *)&shared_data); for ( i = 0; i < NPRODUCER; i++) { ta_create(producer, (void *)&shared_data); } for ( i = 0; i < NCONSUMER; i++) { ta_create(consumer, (void *)&shared_data); } int rv = ta_waitall(); assert(rv == 0); return 0; }
void ta_lock_init(talock_t *mutex) { ta_sem_init(&(mutex->binary_sem), 1); }