(*it)->getValue(): ++it: } ost
Автор admin Пятница, 26 июня 2009 11:32
(*it)->getValue(): ++it: } ostringstream os; os « “Total: ” « count->value() « endl « “Sum of Entrances: ” « sum « endl; display->output(os); count->cancel(); // Завершение программных потоков } catch(Synchronization_Exception& e) { cerr « e.whatO « endl: } 562 Глава 11 • Многопоточное программирование В классе Count хранится суммарное количество посетителей парка. Единый объект Count, определенный в main() под именем count, хранится в классе Entrance под управлением CountedPtr, а, следовательно, совместно используется всеми объектами Entrance. В данном примере вместо обычного объекта Mutex задействован объект FastMutex с именем lock, потому что объект FastMutex опирается на поддержку мутексов операционной системы и дает более интересные результаты. Объект Guard используется с lock в функции increment() для синхронизации доступа к count. Функция вызывает rand(), чтобы примерно в половине случаев между выборкой count в temp и сохранением temp в count включался вызов yield(). Если закомментировать определение объекта Guard, работа программы быстро нарушится, потому что сразу несколько потоков будут обращ
Комментарии закрыты.
Последние комментарии