будем экспериментировать, соз
Автор admin
Четверг, 25 июня 2009 11:32
будем экспериментировать, создадим интерфейс Generator с минимально необходимыми функциями, о которых должен знать EvenChecker. Интерфейс содержит функцию nextValue() для получения следующего числа и функцию остановки генератора: //: СП:EvenChecker.h #ifndef EVENCHECKER_H #define EVENCHECKER_H #include #include “zthread/CountedPtr.h” #include “zthread/Thread.h” #include “zthread/Cancelable.h” #include “zthread/ThreadedExecutor.h” class Generator : public ZThread:Cancelable { bool canceled: public: GeneratorO : canceled(false) {} virtual int nextValueO = 0: void cancel О { canceled = true: } bool isCanceledO { return canceled: } }: class EvenChecker : public ZThread:-.Runnable { ZThread::CountedPtr generator; int id; public: EvenChecker(ZThread::CountedPtr& g, int ident) : generator(g). id(ident) {} ~EvenChecker() { std::cout « “-EvenChecker ” « id « std::endl: } void run() { whi1e(!generator->isCanceled()) { int val = generator->nextValue(): if(val % 2 != 0) { std::cout « val « ” not even!” « std::endl; generator->cancel(); // Завершение всех задач EvenChecker } } } //
Комментарии закрыты.
Последние комментарии