:ToastOMatiс.срр {RunByHand} /

Автор admin Суббота, 27 июня 2009 11:32

:ToastOMatiс.срр {RunByHand} // Проблемы кооперации программных потоков. //{L} ZThread #i nclude #i nclude #include #include “zthread/Thread.h” #include “zthread/Mutex.h” #include “zthread/Guard.h” #include “zthread/Condition.h” #include “zthread/ThreadedExecutor.h” using namespace ZThread: using namespace std; // Нанесение джема на тост с маслом: class Jammer : public Runnable { Mutex lock; Condition butteredToastReady; bool gotButteredToast; int jammed: public: JammerO : butteredToastReady(lock) { gotButteredToast » false; jammed = 0: } void moreButteredToastReadyO { Guard g(lock); gotButteredToast = true; butteredToastReady.signal(); } void run() { try { while(IThread::interrupted()) { { Guard g(lock): while(!gotButteredToast) butteredToastReady.wait(); ++jammed: } cout « “Putting jam on toast ” « jammed « endl; { Guard g(lock); gotButteredToast = false: } } } catch(Interrupted_Exception&) { /* Exit */ } cout « “Jammer off” « endl; Кооперация между программными потоками 575 } } }: // Намазывание масла на тост: class Butterer : public Runnable { Mutex


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