// Copyright (c) 2001  David Muse
// See the file COPYING for more information

#include <rudiments/semaphoreset.h>
#include <rudiments/permissions.h>
#include <rudiments/file.h>
#include <stdio.h>

#ifdef RUDIMENTS_NAMESPACE
using namespace rudiments;
#endif

int main(int argc, const char **argv) {

	// attach to the semaphore set keyed to /tmp/sem containing 2 semaphores
        semaphoreset	sem;
	sem.attach(file::generateKey("/tmp/sem",1),2);

	// loop 10 times, printing 1 and 2, synchronizing with another process
	// using the semaphores
        for (int i=0; i<10; i++) {
                sem.wait(1);
                printf("1\n");
                sem.signal(0);
        
                sem.wait(1);
                printf("3\n");
                sem.signal(0);
        }

	file::remove("/tmp/sem");
}


syntax highlighted by Code2HTML, v. 0.9.1