есто того, чтобы порождать нов
Автор admin
Суббота, 27 июня 2009 11:32
есто того, чтобы порождать новый поток для каждой задачи). //: Cll:TestTQueue.cpp {RunByHand} //{L} ZThread linclude linclude linclude “TQueue.h” linclude “zthread/Thread.h” linclude “LiftOff.h” using namespace ZThread: using namespace std: class LiftOffRunner : public Runnable { Учтите, что если потребители по каким-то причинам прекратят свою работу, то поставщик будет выдавать новые объекты до исчерпания свободной памяти в системе. Чтобы этого не произошло, можно включить в программу ограничение на максимальное количество элементов и организовать блокировку поставщиков при переполнении очереди. 578 Глава 11 • Многопоточное программирование TQueue rockets; public: void add(LiftOff* lo) { rockets.put(1o); } void runО { try { while(!Thread::interrupted()) { LiftOff* rocket = rockets.getO; rocket->run(): } } catch(Interrupted_Exception&) { /* Exit */ } cout « “Exiting LiftOffRunner” « endl: } int mainO { try { LiftOffRunner* lor = new LiftOffRunner; Thread t(lor); for(int i = 0; i < 5; i++) lor->add(new LiftOff(10. i)): cin.getO; lor->add(new LiftOff(10. 99)): cin.getO; t. i
Комментарии закрыты.
Последние комментарии