#include #include #include #include #include #include #include "rollercoaster.h" #include "rcmon.h" using namespace std; int R = 10, C = 5; pthread_t carthread, *riderthread; int *id; RCMon RollerCoaster; int main (int argc, char **argv) { srand (time (nullptr)); riderthread = new pthread_t [R]; id = new int[R]; for (int i=0; i < R; i++) { id[i] = i+1; pthread_create (&riderthread[i],nullptr,rider,&id[i]); } pthread_create (&carthread,nullptr,rollercoaster,nullptr); for (int i=0; i < R; i++) pthread_join (riderthread[i],nullptr); pthread_join (carthread,nullptr); delete[] id; delete[] riderthread; return 0; } void * rider (void *a) { int id = *(int *)a; while (true) { sleep (10+rand()%21); //pause for 10 to 30 seconds. RollerCoaster.Board (id); RollerCoaster.Unboard (id); } return nullptr; } void * rollercoaster (void *a) { while (true) { RollerCoaster.BeginRide (); sleep (30); RollerCoaster.EndRide (); } return nullptr; } int getC () { return C; }