⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buzzer.cc.svn-base

📁 德国Erlangen大学教学操作系统源码。
💻 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 + -