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

📄 alarm.cc

📁 linux的例子,就是下载后到自己的机子上去运行
💻 CC
字号:
#include "system.h"void loop(int which){	while(alarm_clock->Getnum()!=0){		currentThread->Yield();	}	currentThread->Finish();}Alarm::Alarm(char *debugname){	name=debugname;	pausenum=0;	resttime=0;	alarm_list = new List();	alarm_lock = new Lock("alarm");}voidAlarm::Pause(int howLong){	pausenum++;	if(pausenum==1){		Thread *t= new Thread("loop thread");		t->Fork(loop,0);	}	if(howLong<=0)		return;	resttime=stats->totalTicks+howLong*TimerTicks*10;	thread=currentThread;	alarm_list->SortedInsert(currentThread,resttime);	IntStatus oldLevel=interrupt->SetLevel(IntOff);	currentThread->Sleep();	interrupt->SetLevel(oldLevel);}voidAlarm::WakeUp(){	Thread *th1;	int ptime=0;//	IntStatus oldLevel1=interrupt->SetLevel(IntOff);	alarm_lock->Acquire();	th1=(Thread*)alarm_list->SortedRemove(&ptime);	alarm_lock->Release();//	interrupt->SetLevel(oldLevel1);	while(th1!=NULL){		if(stats->totalTicks>=ptime){			scheduler->ReadyToRun(th1);			pausenum--;//			IntStatus oldLevel2=interrupt->SetLevel(IntOff);			alarm_lock->Acquire();			th1=(Thread*)alarm_list->SortedRemove(&ptime);			alarm_lock->Release();//			interrupt->SetLevel(oldLevel2);			continue;		}		else{//			IntStatus oldLevel3=interrupt->SetLevel(IntOff);			alarm_lock->Acquire();			alarm_list->SortedInsert(th1,ptime);			alarm_lock->Release();//			interrupt->SetLevel(oldLevel3);			break;		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -