} ZThread #include

Автор admin Четверг, 25 июня 2009 11:32

} ZThread #include #include “EvenChecker.h” #include “zthread/ThreadedExecutor.h” #include “zthread/Mutex.h” #include “zthread/Guard.h” using namespace ZThread; using namespace std; class GuardedEvenGenerator : public Generator { int currentEvenValue: Mutex lock; public: GuardedEvenGenerator() { currentEvenValue = 0; } -GuardedEvenGeneratorO { cout « “-GuardedEvenGenerator” « endl: } int nextValueO { Guard g(lock); ++currentEvenValue: Совместное использование ограниченных ресурсов 555 Thread::yield(): ++currentEvenValue; return currentEvenValue: } }: int mainO { EvenChecker::test(); } ///:- Обратите внимание: сохранять возвращаемое значение во временной переменной внутри nextValue() теперь не нужно. Обычно применение стражей сокращает объем программного кода и значительно снижает вероятность ошибок со стороны пользователей. У шаблона Guard есть и другая интересная особенность: он позволяет безопасно манипулировать другими объектами-стражами. Например, второй объект Guard может использоваться для временного снятия блокировки: //: Cll:TemporaryUnlocking.cpp // Вре


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