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

📄 attemperarithmetic.cpp

📁 进程或作业先来先服务、高优先权、按时间片轮转调度算法用API与C语言结合实现,绝对有用.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
{
	d->Dspy0();
	return 0;
}
UINT ts1(LPVOID pParam)
{
	d->Dspy1();
	return 0;
}
UINT ts2(LPVOID pParam)
{
	d->Dspy2();
	return 0;
}
UINT ts3(LPVOID pParam)
{
	d->Dspy3();
	return 0;
}
UINT ts4(LPVOID pParam)
{
	d->Dspy4();
	return 0;
}

UINT tsOut(LPVOID pParam)
{
	d->DspyOut();
	return 0;
}



void TC::OnKillFocus(CWnd* pNewWnd) 
{
	CDialog::OnKillFocus(pNewWnd);

	TCSI tcsi;

	// TODO: Add your message handler code here
	UpdateData(TRUE);
	//Get Value
	this->m_Arr1.GetLBText(m_Arr1.GetCurSel(),st[0]);
	this->m_Arr2.GetLBText(m_Arr2.GetCurSel(),st[1]);
	this->m_Arr3.GetLBText(m_Arr3.GetCurSel(),st[2]);
	this->m_Arr4.GetLBText(m_Arr4.GetCurSel(),st[3]);
	this->m_Arr5.GetLBText(m_Arr5.GetCurSel(),st[4]);
	tc0=(CString)st[0];
	tc1=(CString)st[1];
	tc2=(CString)st[2];
	tc3=(CString)st[3];
	tc4=(CString)st[4];
//init TCsort[]
	if (tc0=="0")
		TCsort[0]=0;
	if (tc0=="1")
		TCsort[0]=1;
	if (tc0=="2")
		TCsort[0]=2;
	if (tc0=="3")
		TCsort[0]=3;
	if (tc0=="4")
		TCsort[0]=4;

	if (tc1=="0")
		TCsort[1]=0;
	if (tc1=="1")
		TCsort[1]=1;
	if (tc1=="2")
		TCsort[1]=2;
	if (tc1=="3")
		TCsort[1]=3;
	if (tc1=="4")
		TCsort[1]=4;

	if (tc2=="0")
		TCsort[2]=0;
	if (tc2=="1")
		TCsort[2]=1;
	if (tc2=="2")
		TCsort[2]=2;
	if (tc2=="3")
		TCsort[2]=3;
	if (tc2=="4")
		TCsort[0]=4;
	
	if (tc3=="0")
		TCsort[3]=0;
	if (tc3=="1")
		TCsort[3]=1;
	if (tc3=="2")
		TCsort[3]=2;
	if (tc3=="3")
		TCsort[3]=3;
	if (tc3=="4")
		TCsort[3]=4;

	if (tc4=="0")
		TCsort[4]=0;
	if (tc4=="1")
		TCsort[4]=1;
	if (tc4=="2")
		TCsort[4]=2;
	if (tc4=="3")
		TCsort[4]=3;
	if (tc4=="4")
		TCsort[4]=4;

//init var in tcsi
	for(int j=0;j<5;j++)
		tcsi.m_ArrQ=tcsi.m_ArrQ+st[j];
	tcsi.m_S1=m_Ser1;
	tcsi.m_S2=m_Ser2;
	tcsi.m_S3=m_Ser3;
	tcsi.m_S4=m_Ser4;
	tcsi.m_S5=m_Ser5;
	tcsi.m_ts=m_TS;
	s=m_TS;
	SerT[0]=m_Ser1;
	SerT[1]=m_Ser2;
	SerT[2]=m_Ser3;
	SerT[3]=m_Ser4;
	SerT[4]=m_Ser5;

	tcsi.DoModal();

//Thread Begin here
	HWND hWnd=GetSafeHwnd();
	tcInitThread = AfxBeginThread(tcInit,hWnd);
	Sleep(200);
	tc0Thread = AfxBeginThread(ts0,hWnd);
	tc1Thread = AfxBeginThread(ts1,hWnd);
	tc2Thread = AfxBeginThread(ts2,hWnd);
	tc3Thread = AfxBeginThread(ts3,hWnd);
	tc4Thread = AfxBeginThread(ts4,hWnd);
	AfxBeginThread(tsOut,hWnd);

}

void CAttemperArithmeticView::DspyOut()
{
	CClientDC dc(this);
//out
	CString b,c,d,e,f;
		//Server 1
		if (SerT[0]==1)
			b="1";
		if (SerT[0]==2)
			b="2";
		if (SerT[0]==3)
			b="3";
		if (SerT[0]==4)
			b="4";
		if (SerT[0]==5)
			b="5";
		if (SerT[0]==6)
			b="6";	
		//Server 2
		if (SerT[1]==1)
			c="1";
		if (SerT[1]==2)
			c="2";
		if (SerT[1]==3)
			c="3";
		if (SerT[1]==4)
			c="4";
		if (SerT[1]==5)
			c="5";
		if (SerT[1]==6)
			c="6";	
		//Server 3
		if (SerT[2]==1)
			d="1";
		if (SerT[2]==2)
			d="2";
		if (SerT[2]==3)
			d="3";
		if (SerT[2]==4)
			d="4";
		if (SerT[2]==5)
			d="5";
		if (SerT[2]==6)
			d="6";	
		//Server 4
		if (SerT[3]==1)
			e="1";
		if (SerT[3]==2)
			e="2";
		if (SerT[3]==3)
			e="3";
		if (SerT[3]==4)
			e="4";
		if (SerT[3]==5)
			e="5";
		if (SerT[3]==6)
			e="6";	
		//Server 5
		if (SerT[4]==1)
			f="1";
		if (SerT[4]==2)
			f="2";
		if (SerT[4]==3)
			f="3";
		if (SerT[4]==4)
			f="4";
		if (SerT[4]==5)
			f="5";
		if (SerT[4]==6)
			f="6";	
	dc.MoveTo(150,410);
	dc.LineTo(800,410);
	dc.MoveTo(150,510);
	dc.LineTo(800,510);
	dc.MoveTo(150,610);
	dc.LineTo(800,610);
	dc.MoveTo(250,410);
	dc.LineTo(250,610);
	dc.MoveTo(350,410);
	dc.LineTo(350,610);
	dc.MoveTo(150,410);
	dc.LineTo(250,510);
	dc.TextOut(180,420,"Work Info");
	dc.TextOut(150,490,"Time Slice");
	dc.TextOut(160,540,"RR");
	dc.TextOut(160,560,"q=");
	dc.TextOut(180,560,a);
	dc.TextOut(260,420,"Thread Name");
	dc.TextOut(260,455,"Arrived Time");
	dc.TextOut(260,485,"Server Time");
	dc.TextOut(260,520,"FinishedTime");
	dc.TextOut(260,555,"Round Time");
	dc.TextOut(260,585,"Value Time");
//Thread 0
	dc.TextOut(400,420,"0");
	dc.TextOut(400,455,st[0]);
	dc.TextOut(400,485,b);
//Thread 1
	dc.TextOut(460,420,"1");
	dc.TextOut(460,455,st[1]);
	dc.TextOut(460,485,c);
//Thread 2
	dc.TextOut(520,420,"2");
	dc.TextOut(520,455,st[2]);
	dc.TextOut(520,485,d);
//Thread 3
	dc.TextOut(580,420,"3");
	dc.TextOut(580,455,st[3]);
	dc.TextOut(580,485,e);
//Thread 4
	dc.TextOut(640,420,"4");
	dc.TextOut(640,455,st[4]);
	dc.TextOut(640,485,f);

	dc.TextOut(700,420,"Average");
}
void CAttemperArithmeticView::Dspy0()
{
	CClientDC dc(this);
	int y;
	int f,finish;
	finish=0;
	f=0;
	y=(TCsort[0]*20)+250;
	Sleep(TCsort[0]*1000);
	for(int i=0;i<SerT[0];i++)
	{
		dc.MoveTo(x,y);
		for (int j=0;j<s;j++)
		{
			if (f!=SerT[0])
			{
				f++;
				FinishedTime[0]++;
				finish=FinishedTime[0];
				x=x+20;
				dc.LineTo(x,y);
			}
		}
	//	if (i+1<SerT[0])
			Sleep(5000);
	}
	dc.TextOut(800,y-5,"Execute Finished!");
//calc finish time,round time,value time and putout it
	RoundTime[0]=finish-TCsort[0];
	ValueTime[0]=RoundTime[0]/SerT[0];
	CString ff,rr,vv;
	if (finish==1)
		ff="1";
	if (finish==2)
		ff="2";
	if (finish==3)
		ff="3";
	if (finish==4)
		ff="4";
	if (finish==5)
		ff="5";
	if (finish==6)
		ff="6";
	if (finish==7)
		ff="7";
	if (finish==8)
		ff="8";
	if (finish==9)
		ff="9";
	if (finish==10)
		ff="10";
	if (finish==11)
		ff="11";
	if (finish==12)
		ff="12";
	if (finish==13)
		ff="13";
	if (finish==14)
		ff="14";
	if (finish==15)
		ff="15";
	if (finish==16)
		ff="16";
	if (finish==17)
		ff="17";
	if (finish==18)
		ff="18";
	if (finish==19)
		ff="19";
	if (finish==20)
		ff="20";

	if (RoundTime[0]==1)
		rr="1";
	if (RoundTime[0]==2)
		rr="2";
	if (RoundTime[0]==3)
		rr="3";
	if (RoundTime[0]==4)
		rr="4";
	if (RoundTime[0]==5)
		rr="5";
	if (RoundTime[0]==6)
		rr="6";
	if (RoundTime[0]==7)
		rr="7";
	if (RoundTime[0]==8)
		rr="8";
	if (RoundTime[0]==9)
		rr="9";
	if (RoundTime[0]==10)
		rr="10";
	if (RoundTime[0]==11)
		rr="11";
	if (RoundTime[0]==12)
		rr="12";
	if (RoundTime[0]==13)
		rr="13";
	if (RoundTime[0]==14)
		rr="14";
	if (RoundTime[0]==15)
		rr="15";
	if (RoundTime[0]==16)
		rr="16";
	if (RoundTime[0]==17)
		rr="17";
	if (RoundTime[0]==18)
		rr="18";
	if (RoundTime[0]==19)
		rr="19";
	if (RoundTime[0]==20)
		rr="20";

	if (ValueTime[0]==1)
		vv="1";
	if (ValueTime[0]==2)
		vv="2";
	if (ValueTime[0]==3)
		vv="3";
	if (ValueTime[0]==4)
		vv="4";
	if (ValueTime[0]==5)
		vv="5";
	if (ValueTime[0]==6)
		vv="6";
	if (ValueTime[0]==7)
		vv="7";
	dc.TextOut(400,520,ff);
	dc.TextOut(400,555,rr);
	dc.TextOut(400,585,vv);

	int avg;
	avg=RoundTime[0]+RoundTime[1]+RoundTime[2]+RoundTime[3]+RoundTime[4];
	avg=avg/5;
	CString aveg;
	if (avg==1)
		aveg="1";
	if (avg==2)
		aveg="2";
	if (avg==3)
		aveg="3";
	if (avg==4)
		aveg="4";
	if (avg==5)
		aveg="5";
	if (avg==6)
		aveg="6";
	if (avg==7)
		aveg="7";
	if (avg==8)
		aveg="8";
	if (avg==9)
		aveg="9";
	if (avg==10)
		aveg="10";
	if (avg==11)
		aveg="11";
	if (avg==12)
		aveg="12";
	if (avg==13)
		aveg="13";
	if (avg==14)
		aveg="14";
	if (avg==15)
		aveg="15";
	dc.TextOut(700,555,aveg);
}
void CAttemperArithmeticView::Dspy1()
{
	CClientDC dc(this);
	int y;
	int f,finish1;
	finish1=0;
	f=0;
	y=(TCsort[1]*20)+250;
	Sleep(TCsort[1]*1000);
	for(int i=0;i<SerT[1];i++)
	{
		dc.MoveTo(x,y);
	//	x=x+s*20;
		for (int j=0;j<s;j++)
		{
			if (f!=SerT[1])
			{
				f++;
				FinishedTime[0]++;
				finish1=FinishedTime[0];
				x=x+20;
				dc.LineTo(x,y);
			}
		}
	//	if (i+1<=SerT[1])
			Sleep(5000);
	}
	dc.TextOut(800,y-5,"Execute Finished!");
	RoundTime[1]=finish1-TCsort[1];
	ValueTime[1]=RoundTime[1]/SerT[1];
	CString ff,rr,vv;
	if (finish1==1)
		ff="1";
	if (finish1==2)
		ff="2";
	if (finish1==3)
		ff="3";
	if (finish1==4)
		ff="4";
	if (finish1==5)
		ff="5";
	if (finish1==6)
		ff="6";
	if (finish1==7)
		ff="7";
	if (finish1==8)
		ff="8";
	if (finish1==9)
		ff="9";
	if (finish1==10)
		ff="10";
	if (finish1==11)
		ff="11";
	if (finish1==12)
		ff="12";
	if (finish1==13)
		ff="13";
	if (finish1==14)
		ff="14";
	if (finish1==15)
		ff="15";
	if (finish1==16)
		ff="16";
	if (finish1==17)
		ff="17";
	if (finish1==18)
		ff="18";
	if (finish1==19)
		ff="19";
	if (finish1==20)
		ff="20";

	if (RoundTime[1]==1)
		rr="1";
	if (RoundTime[1]==2)
		rr="2";
	if (RoundTime[1]==3)
		rr="3";
	if (RoundTime[1]==4)
		rr="4";
	if (RoundTime[1]==5)
		rr="5";
	if (RoundTime[1]==6)
		rr="6";
	if (RoundTime[1]==7)
		rr="7";
	if (RoundTime[1]==8)
		rr="8";
	if (RoundTime[1]==9)
		rr="9";
	if (RoundTime[1]==10)
		rr="10";
	if (RoundTime[1]==11)
		rr="11";
	if (RoundTime[1]==12)
		rr="12";
	if (RoundTime[1]==13)
		rr="13";
	if (RoundTime[1]==14)
		rr="14";
	if (RoundTime[1]==15)
		rr="15";
	if (RoundTime[1]==16)
		rr="16";
	if (RoundTime[1]==17)
		rr="17";
	if (RoundTime[1]==18)
		rr="18";
	if (RoundTime[1]==19)
		rr="19";
	if (RoundTime[1]==20)
		rr="20";

	if (ValueTime[1]==1)
		vv="1";
	if (ValueTime[1]==2)
		vv="2";
	if (ValueTime[1]==3)
		vv="3";
	if (ValueTime[1]==4)
		vv="4";
	if (ValueTime[1]==5)
		vv="5";
	if (ValueTime[1]==6)
		vv="6";
	if (ValueTime[1]==7)
		vv="7";
	dc.TextOut(460,520,ff);
	dc.TextOut(460,555,rr);
	dc.TextOut(460,585,vv);

	int avg;
	avg=RoundTime[0]+RoundTime[1]+RoundTime[2]+RoundTime[3]+RoundTime[4];
	avg=avg/5;
	CString aveg;
	if (avg==1)
		aveg="1";
	if (avg==2)
		aveg="2";
	if (avg==3)
		aveg="3";
	if (avg==4)
		aveg="4";
	if (avg==5)
		aveg="5";
	if (avg==6)
		aveg="6";
	if (avg==7)
		aveg="7";
	if (avg==8)
		aveg="8";
	if (avg==9)
		aveg="9";
	if (avg==10)
		aveg="10";
	if (avg==11)
		aveg="11";
	if (avg==12)
		aveg="12";
	if (avg==13)
		aveg="13";
	if (avg==14)
		aveg="14";
	if (avg==15)
		aveg="15";
	dc.TextOut(700,555,aveg);
}

void CAttemperArithmeticView::Dspy2()
{
	CClientDC dc(this);
	int y;
	int f,finish2;

⌨️ 快捷键说明

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