Beispiel #1
0
fifo fifo_new(size_t size)
{
    fifo p;

    assert(size > 0);

    if ((p = malloc(sizeof *p)) == NULL)
        return NULL;

    if ((p->lock = wlock_new()) == NULL) {
        free(p);
        return NULL;
    }

    if ((p->pelem = calloc(size, sizeof *p->pelem)) == NULL) {
        wlock_free(p->lock);
        free(p);
        return NULL;
    }

    p->size = size;
    p->nelem = 0;
    p->iwrite = p->iread = 0;

    return p;
}
Beispiel #2
0
int main(void)
{
	wlock w = wlock_new();
	pthread_t wid, sid;

	pthread_create(&wid, NULL, waiter, w);
	sleep(1); /* Give the thread some time to call wlock_wait() before we signal */
	pthread_create(&sid, NULL, signaler, w);
	pthread_join(wid, NULL);
	pthread_join(sid, NULL);

	wlock_free(w);
	return 0;
}