whi1e(wheelBotHi red) workCon
Автор admin
Среда, 1 июля 2009 11:32
whi1e(wheelBotHi red) workCondition.waitO; wheelBotHired = true; // Принять задание } void offerDriveTrainBotServices() { Guard g(workLock); wh i1e(dri veTra i nBotHi red) workCondition.wait(): driveTrainBotHired = true; // Принять задание } // Оповещение ожидающих роботов о наличии работы: void startWorkO { Guard g(workLock); engineBotHired = false: wheelBotHired = false; driveTrainBotHired = false; workCondition.broadcast); } // Каждый робот сообщает о выполнении своей задачи: void taskFinished() { Guard g(readyLock); readyCondition.signal(); } // Director ждет, пока будут завершены все задачи: void waitUntilWorkFinishedO { Guard g(readyLock); while(!(c.enginelnstalled() && c.driveTrainlnstalledO && c.wheelsInstalledO)) 584 Глава 11 • Многопоточное программирование readyCondition.wait(): } }: typedef CountedPtr CradlePtr; class Director : public Runnable { CarQueue chassisQueue. finishingQueue; CradlePtr cradle; public: Director(CarQueue& cq. CarQueueS fq. CradlePtr cr) : chassisQueue(cq). finishingQueue(fq). cradle(cr) {} void run() { try { while(IThread::interru
Комментарии закрыты.
Последние комментарии