ммными потоками 579 Toast О

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

ммными потоками 579 Toast О { assert(O): } // Никогда не должен вызываться #endif void butterO { status = BUTTERED: } void jam() { status = JAMMED; } string getStatusO const { switch(status) { case DRY: return “dry”; case BUTTERED: return “buttered”: case JAMMED: return “jammed”; default: return “error”; } } int getldO { return id: } friend ostream& operator«(ostream& os, const Toast& t) { return os « “Toast ” « t.id « “: ” « t.getStatusO: } }: typedef CountedPtr< TQueue > ToastQueue: class Toaster : public Runnable { ToastQueue toastQueue; int count: public: Toaster(ToastQueue& tq) : toastQueue(tq). count(O) {} void run() { try { while(IThread::interrupted()) { int delay = rand()/(RAND_MAX/5)*100: Thread::sleep(delay); // Изготовление тоста Toast t(count++); cout « t « endl; // Постановка в очередь toastQueue->put(t): } } catch(Interrupted_Exception&) { /* Exit */ } cout « “Toaster off” « endl; } // Намазывание масла на тост: class Butterer : public Runnable { ToastQueue dryQueue, butteredQueue; public: Butterer(ToastQueue& dry. ToastQueue& buttered) : dryQueue(dry). butteredQueue(buttered) {}


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