Exemple #1
0
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;
}
Exemple #2
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;
}
Exemple #3
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);
}