ывает мутекс перед входом в кр

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

ывает мутекс перед входом в критическую секцию и освобождает его в конце критической секции. В любой момент мутекс может быть захвачен только одним программным потоком, так что в результате достигается взаимное исключение: //: Cll:MutexEvenGenerator.cpp // Предотвращение коллизий с применением мутексов. //{L} ZThread #i nclude #include “EvenChecker.h” #include “zthread/ThreadedExecutor.h” #include “zthread/Mutex.h” using namespace ZThread: using namespace std: class MutexEvenGenerator : public Generator { int currentEvenValue: Mutex lock; public: MutexEvenGenerator() { currentEvenValue = 0: } -MutexEvenGenerator() { cout « “-MutexEvenGenerator” « endl; } int nextValueO { lock.acquireO; ++currentEvenValue: Thread::yield(); ++currentEvenValue: int rval = currentEvenValue: lock.releasee); return rval: } }: int mainO { EvenChecker::test(): } ///:- Класс MutexEvenGenerator содержит мутекс (Mutex) с именем lock. Внутри функции nextValue() создается критическая секция, для чего используются функции acquireQ и release(). Кроме того, между двумя инкрементами вставлен вызов yield(),


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