endl: // Постановка рамы в оч

Автор admin Среда, 1 июля 2009 11:32

endl: // Постановка рамы в очередь carQueue->put(c); } } catch(Interгupted_Exception&) { /* Exit */ } cout « “ChassisBuilder off” « endl: } }: class Cradle { Car с: // Машина, собираемая в данный момент bool occupied: Mutex workLock. readyLock; Condition workCondition. readyCondition; bool engineBotHired. wheelBotHired. driveTrainBotHired: Кооперация между программными потоками 583 public: CradleO : workCondition(workLock). readyCondition(readyLock) { occupied = false; engineBotHired = true; wheelBotHired = true; driveTrainBotHired = true; } void insertCar(Car chassis) { с = chassis; occupied = true; } Car getCarO { // Выборка производится только один раз if(!occupied) { cerr « “No Car in Cradle for getCarO” « endl: return CarO: // “Пустой” объект Car } occupied = false: return c; } // Обращение к машине на монтажном стенде: Car* operator->() { return &с; } // Для предложения роботами своих услуг: void offerEngineBotServices() { Guard g(workLock); wh i1e(eng i neBotH i red) workCondition.wait(); engineBotHired = true: // Принять задание } void offerWheelBotServices() { Guard g(workLock):


Комментарии закрыты.