/* criticalsections.c */ #include #include #include #include #include #include #include #include #include "sem_ops.h" #define THREADS 5 int sem; int counter; void *threadfunc( void * arg ) { /* function for each thread */ int *me; me = (int *) arg; P( sem ); counter++; printf( "Thread %d running!! counter = %d\n", *me, counter ); V( sem ); pthread_exit( NULL ); } int main( void ) { int i; pthread_t tid[THREADS]; int id[THREADS]; counter = 0; sem = semtran( IPC_PRIVATE ); V( sem ); /* initialise to 1 */ for( i=0; i