//------------------------------------------------------------------------ // Filename: // alarmclock-main.cpp // PROGRAM DESCRIPTION // The main program that uses a monitor to implement a alarm clock problem. //------------------------------------------------------------------------ #include #include "ThreadClass.h" #include "alarmclock-Thrd.h" #include "alarmclock-mon.h" #define MAX_NUM 20 // max. number of sleeper threads //------------------------------------------------------------------------ // main() function //------------------------------------------------------------------------ void main(int argc, char *argv[]) { SleeperThread *sleepthread[MAX_NUM]; int NumberOfThreads; // total number of threads int Iterations; int i; if (argc != 3) { // verify user input cout << "Usage " << argv[0] << " #-of-Sleeper Threads" << " Iterations" << endl; exit(0); } else { NumberOfThreads = abs(atoi(argv[1])); Iterations = abs(atoi(argv[2])); } // create the increment/decrement threads in a random way for (i = 0; i < NumberOfThreads; i++) { // create threads sleepthread[i] = new SleeperThread(i + 1, Iterations); sleepthread[i]->Begin(); } DriverThread driverthread; driverthread.Begin(); for (i = 0; i < NumberOfThreads; i++) sleepthread[i]->Join(); Exit(); }