📄 buzzer.cc.svn-base
字号:
/*****************************************************************************//* Betriebssysteme *//*---------------------------------------------------------------------------*//* *//* B U Z Z E R *//* *//*---------------------------------------------------------------------------*//* Mit Hilfe des "Weckers" koennen Prozesse eine bestimmte Zeit lang *//* schlafen und sich dann wecken lassen. *//*****************************************************************************/#include "device/watch.h"#include "meeting/bell.h"#include "meeting/buzzer.h"#include "meeting/bellringer.h"#include "syscall/guarded_organizer.h"#include "device/cgastr.h"extern CGA_Stream kout;extern Watch watch;extern Guarded_Organizer scheduler;extern Bellringer bellringer;Buzzer::Buzzer(){}Buzzer::Buzzer(Buzzer& buzzer){}Buzzer::~Buzzer(){} void Buzzer::ring(){ Customer *cust = static_cast<Customer*>(dequeue()); while(cust) { scheduler.Organizer::wakeup(*cust); Customer* cust2 = static_cast<Customer*>(dequeue()); if(cust2 == cust || cust2->next == cust || cust->next == cust2) { kout.goto_head(); } else cust = cust2; }}void Buzzer::set (int ms){ wait(ms*1000/watch.interval());}void Buzzer::sleep (){ Customer *cust = static_cast<Customer*>(scheduler.Scheduler::active()); remove(cust); enqueue(cust); bellringer.job(this, wait()); scheduler.Organizer::block(*cust, *this);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -