




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
成鰭.
③43?摟網(wǎng)二丈孝
實(shí)驗(yàn)報(bào)告
課程名稱:操作系統(tǒng)
實(shí)驗(yàn)項(xiàng)目:windows進(jìn)程管理
姓名:
專計(jì)算機(jī)科學(xué)與技術(shù)
業(yè):
班級(jí):
學(xué)號(hào):
計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院
計(jì)算機(jī)系
2023年4月23日
實(shí)驗(yàn)項(xiàng)目名稱:Windows進(jìn)程管理____________________
一、實(shí)驗(yàn)?zāi)康?/p>
1.學(xué)習(xí)windows系統(tǒng)提供的線程創(chuàng)建、線程撤消、線程同步等系統(tǒng)調(diào)用;
2.運(yùn)用C++實(shí)現(xiàn)線程創(chuàng)建、線程撤消、線程同步程序;
3.完畢思考、設(shè)計(jì)與練習(xí)。
二、實(shí)驗(yàn)用設(shè)備儀器及材料
1.Windows7或10,VS2023及以上版本。
三、實(shí)驗(yàn)內(nèi)容
1線程創(chuàng)建與撤消
寫一個(gè)windows控制臺(tái)程序(需要MFC),創(chuàng)建子線程,顯示Hello,ThisisaThread.然后
撤消該線程。
相關(guān)系統(tǒng)調(diào)用:
線程創(chuàng)建:CreateThread()
線程撤消:ExitThread()
線程終止:ExitThread(0)
線程掛起:SleepO
關(guān)閉句柄:Closellandle()
參考代碼:
//OS-TEST,cpp:定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include"stdafx.h〃
#inc1ude”O(jiān)S-TEST.hn
#ifdef_DEBUG
#definenewDEBUGNEW
#endif
//唯一的應(yīng)用程序?qū)ο?/p>
CWinApptheApp;
usingnamespacestd;
voidThreadName1();
inttmain(intargc,TCHAR*argv[],TCHAR*envp[])
(
?>intnRetCode=0;
staticHANDLEhHandlel=NULL;
DWORDdwThreadID1;
HMODULEhModule=::GetModuleHandle(NULL);
oif(hModule!=NULL)
°(
“/初始化MFC并在失敗時(shí)顯示錯(cuò)誤
if(!AfxWinInit(hModule,NULL,::GetCommandLineO,0))
°(
。//TODO:更改錯(cuò)誤代碼以符合您的需要
。_tprintf(_T(〃錯(cuò)誤:MFC初始化失敗\n〃));
?onRetCode=1;
)
1se
d(
。//TODO:在此處為應(yīng)用程序的行為編寫代碼。
)
else
。//TODO:更改錯(cuò)誤代碼以符合您的需要
_tprintf(_T("錯(cuò)誤:GetModuleHandle失敗\n"));
。nRetCode=1;
)
hHand1el=CreateThread((LPSECURITY_ATTRIBUTES)NULL,
M),
3(LPTHREAD_START_R0UTINE)ThreadName1,
。。。(LPVOID)NULL,
?0,
。必&dwThreadID1);
SIeep(5000);
Closelland1e(hHandle1);
ExitThread(0);
。//getchar();
returnnRetCode;
)
voidThreadName1()
(
printf("Hello,ThisisaThread./z);
)
運(yùn)營(yíng)結(jié)果如圖所示。
■選擇D:\cpp\OS-TEST\Debug\OS-TEST.exe
Hello,ThisisaThread.
完畢以下設(shè)計(jì)題目:
1.向線程相應(yīng)的函數(shù)傳遞參數(shù),如字符串“helloworld!”,在線程中顯示。
2.如何創(chuàng)建3個(gè)線程A,B,C,并建立先后序執(zhí)行關(guān)系A(chǔ)-B-C。
實(shí)驗(yàn)內(nèi)容2線程同步
完畢父線程和子線程的同步。父線程創(chuàng)建子線程后進(jìn)入阻塞狀態(tài),子線程運(yùn)營(yíng)完畢后再喚醒。
相關(guān)系統(tǒng)調(diào)用:
等待對(duì)象WaitForSing1eObject(),WaitForMultipleObjects();
信號(hào)量對(duì)象CreateSemaphore(),OpenSemaphore(),ReieaseSemaphore();
HANDLEWINAPICreateSemaphore(
_In_opt_LPSECURITY_ATTRIBUTESIpSemaphoreAttributes
_In_LONGIInitia1Count,
_In_LONGIMaximumCount,
_In_opt_LPCTSTRIpName
);
第一個(gè)參數(shù):安全屬性,假如為NULL則是默認(rèn)安全屬性
第二個(gè)參數(shù):信號(hào)量的初始值,要>=0且<=第三個(gè)參數(shù)
第三個(gè)參數(shù):信號(hào)量的最大值
第四個(gè)參數(shù):信號(hào)量的名稱
返回值:指向信號(hào)量的句柄,假如創(chuàng)建的信號(hào)量和己有的信號(hào)量重名,那么返回已經(jīng)存在的信號(hào)量句柄
參考代碼:
//OS-TEST.cpp:定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include〃stdafx.h〃
#include'0S-TEST.h"
ttifdef_DEBUG
#definenewDEBUG_NEW
#endif
//唯一的應(yīng)用程序?qū)ο?/p>
CWinApptheApp;
usingnamespacestd;
//voidThreadName1();
staticHANDLEhl;
staticHANDLEhHandle1=NULL;
voidfunc();
int_tmain(intargc,TCHAR*argv[],TCHAR*envp[])
(
intnRetCode=0;
DWORDdwThreadIDl;
?DWORDdRes,err;
o//LPCWSTR1PCWSTR=MSemaphoreNamel";
//hHandle1=CreateSemaphore(NULL,0,1,NULL);//CREATEASEMAPHORE
hHand1el=CreateSemaphore(NULL,0,1,Lz,SemaphoreName1?,);//CREATEASEMAP
HORE
if(hHand1e1==NULL)printf(nSemaphoreereateERR!\n");
?>elseprintf(z,Semaphorecreatesuccess!\n〃);
hHandle1=0penSemaphore(SYNCHRONIZE|SEMAPH0RE_M0DIFY_STATE,
ooooNULL,
aarSemaphoreNamel,z);//OPENSEMAPHORE
。if(hHandlel==NULL)printf(〃SemaphoreopenERR!\n〃);
oelseprintf("Semaphoreopensuecess!\n〃);
hl=CreateThread((LPSECUR1TY_ATTRIBUTES)NULL,
0000,
ooo(LPTHREAD_START_R0UTINE)func,
。(LPVOID)NULL,
。ooO,
b&dwThreadIDl);//CREATECHILDTHREAD
if(h1==NULL)printf(,zThreadcreateERR!\n〃);
eIseprintf("Threadcreatesuccess!\n〃);
^dRes=WaitForSing1eObject(hHandlel,INFINITE);//WAITFORCHILDT1IR
EADEND
?err=GetLastError();
printf(〃Waitforsing1eobjectERR=%d\n,z,err);
oif(dRes==WAIT_TIMEOUT)printfCTIMEOUTOFdRes=%d\n〃,dRes);
oeIseif(dRes=WAIT_OBJECT_O)printfCWAIT_0BJECTdRes=%d\n,z,dRe
s);
也Iseif(dRes=WAIT.ABANDONED)printf(zzWAIT_ABANDONEDdRes二%d\n〃,dRes);
?elseprintf(z,dRes=%d\n”,dRes);
?>C1oseHandie(hl);
£1oseHand1e(hHand1el);
ExitThread(0);
oreturnnRetCode;
)
voidfunc0
(
。B00Lrc;
DW0RDerr;
printf("NowinThread.\n");
?rc=ReleaseSemaphore(hHandle1,1,NULL);
err=GetLastError();
eprintf("Re1easeSemaphoreerr=%d\n,z,err);
?if(rc=0)printf(Z/SemaphoreReleaseFai1.\n〃);
elseprintf("SemaphoreReleaseSuccess.rc=%d\n〃,rc);
)
編譯運(yùn)營(yíng),結(jié)果如圖所示。
■辭D:\cpp\OS-TEST\Debug\OS-TEST.exe
Semaphorecreatesuccess!
Semaphoreopensuccess!
Threadcreatesuccess!
NowinThread.
ReleaseSemaphoreerr=0
WaitforsingleobjectERR=0
SemaphoreReleaseSuccess.rc=l
dRes=0
完畢以下設(shè)計(jì)題目:
3.用信號(hào)量控制實(shí)現(xiàn)3個(gè)線程的同步,線程A釋放信號(hào)量后執(zhí)行B,B釋放信號(hào)量后執(zhí)行C。
四、實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)內(nèi)容1
1.向線程相應(yīng)的函數(shù)傳遞參數(shù),如字符串“helloworId!”,在線程中顯示。
結(jié)果:
EE:\users\mzyli\documents\visualstudio2010\Projects\66645\D...—□X
Hello,World.
//66645.cpp:定]§義°?控?制?臺(tái)F§應(yīng)?|用@?程、序,…的i?入“?口“2點(diǎn)i?。博
#inc1ude"stdafx.h
^include”66645.h”
#ifdef_DEBUG
UdefinenewDEBUG_NEW
#endif
//唯i§—°?的1?應(yīng)?|用??程"r序,一對(duì)?象"?
CWinApptheApp;
usingnamespacestd;
voidThreadNamel();
inttmain(intargc,TCHAR*argv[],TCHAR*envp[])
。intnRetCode=0;
staticHANDLEhHandle1=NULL;
。DWORDdwThreadIDl;
。HMODULEhModu1e=::GetModuleHand1e(NULL);
。if(hModule!=NULL)
(
。//初?始°?化[¥MEC并在f失。ji敗々r時(shí)。1人顯?示。?錯(cuò)「a誤??
oif(!AfxWininit(hModu1e,NULL,::GetCommandLine(),0))
0o{
。//TODO:更“'改?錯(cuò)a誤"?代2碼?以。?符0?合?您“2的i?需““要。a
。_tprintf(_T("錯(cuò)iC"誤"?:MFC初?始"?化]¥失'i敗3\n"));
。onRetCode=1;
selse
。(
。//TODO:在一此總?處芨I為@應(yīng)?|用??程?■「序一的i?行D為a編A-0寫i笈代父2碼?一倉
°}
°}
。else
。(
//TODO:更r改?錯(cuò)Va誤代v2碼?以。?符口?合?您”2的]?需?一?要。a
_tprintf(_T("錯(cuò)iia誤"?:GetModuleHandie失。ii敗豆=\n"));
。nRetCode=1;
。hHandlel=CreateThread((LPSECURITY_ATTRIBUTES)NULL,
00030,
。。。。(LPTHREAD_START_R0UTINE)ThreadNamel,
-。(LPVOID)NULL,
0000,
。。。&dwThreadID1);
S1eep(5000);
CloseHand1e(hHandle1);
。ExitThread(0);
a
//getchar();
returnnRetCode;
)
voidThreadName1()
{
。printf(,ZHe1lo,WorId.");
2.如何創(chuàng)建3個(gè)線程A,B,C,并建立先后序執(zhí)行關(guān)系A(chǔ)-BfC。
■3i^E:\users\mzy^documents\visualstudio2010\Projects\147589\Debug\147589.exe□X
hello,ThisisaThreadA.
[ThisisaThreadB.
[ThisisaThreadC.
//147589.cpp:定[§義。?控?制?臺(tái)F§應(yīng)@|用??程..「序”的1?入”?口”2點(diǎn)也送
//
#include"stdafx.h,z
^include"147589.h〃
#ifdef_DEBUG
#definenewDEBUG,NEW
#endif
//唯i§一°?的i?應(yīng)?|用??程"r序?一對(duì)?象
CWinApptheApp;
usingnamespacestd;
voidThreadName1();
voidThreadName2();
voidThreadName3();
staticHANDLEhl;
staticHANDLEh2;
staticHANDLEh3;
staticHANDLEhHandlel=NULL;
staticHANDLEhHandle2=NULL;
staticIIANDLEhHandle3=NULL;
int_tmain(intargc,TCHAR*argv[],TCHAR*envp[])
(
。intnRetCode=0;
staticHANDLEhHandlel=NULL;
。staticHANDLEhHandle2=NULL;
。staticHANDLEhHand1e3=NULL;
DWORDdwThreadIDl;
HMODULEhModu1e二::GetModu1eHand1e(NULL);
if(hModule!二NULL)
(
//初?始°?化[¥MFC并i6在?.2失。ji敗丁?時(shí)。jA顯?示。?錯(cuò)丁a誤,??
。if(!AfxWinlnit(hModule,NULL,::GetCommandLine(),0))
0o(
…//TODO:更r改?錯(cuò)曠a誤"?代『2碼?以。?符0?合?您“2的i?需““要。a
。_tprintf(_T("錯(cuò)誤”?:MFC初?始。?化[¥失。門敗宮"I\n"));
。nRetCode=1;
。else
(
。。//TODO:在“2此a?處保為a應(yīng)?用??程序”’的。行D為a編寫速代廠2碼?.jg
0Of
)
else
(
。?!═ODO:更一改?錯(cuò)A“a誤"?代「2碼?以。?符0?合?您,,2的i?需?一?要。a
。。_tprintf(_T(〃錯(cuò)4''一誤_?:GetModu1eHandle失。ji敗"r\n"));
。。nRetCode=1;
}
//?charstr[]="heIloworld!e?";
hHand1el=CreateThread((LPSECURITY_ATTRIBUTES)NULL,
°°0,
。(LPTHREAD_START_ROUTINE)ThreadName1,
。(LPVOID)NULL,
。//(LPVOID)str,
。0,
&dwThreadIDl);
//Sleep(5000);
hHandle2=CreateThread((LPSECURITY_ATTRIBUTES)NULL,
。0,
。。(LPTHREAD_START_ROUTINE)ThreadName2,
。(LPVOID)NULL,
0,
。&dwThreadlD1);
。//SIeep(5000);
/AC1oseHandle(hHandle1);
hHandle3=CreateThread((LPSECURITY_ATTRIBUTES)NULL,
o0,
o(LPTHREAD_START_R0UTINE)ThreadName3,
(LPVOID)NULL,
0,
&dwThreadlDl);
。S1eep(1000);
〃。C1oseHandle(hllandle2);
C1oseHandle(hHandle3);
Closellandle(hlland1e2);
CloseHandle(hHandle1);
ExitThread(0);
。//getchar();
。returnnRetCode;
}
voidThreadNamel()
(
pr1ntf(MHei1o,ThisisaThreadA.\n");
。//printf('%s",str);
voidThreadName2()
。printf("ThisisaThreadB.\n");
)
voidThreadName3()
(
printf(nThisisaThreadC.\n");
)
實(shí)驗(yàn)內(nèi)容2
2.用信號(hào)量控制實(shí)現(xiàn)3個(gè)線程的同步,線程A釋放信號(hào)量后執(zhí)行B,B釋放信號(hào)量后執(zhí)行C。
SemaphoreReleaseSuccess.rc=l
'eleaseSemaphoreerr=0
【aitforsingleobjectERR=0
lRes=0
lowinThread.
Semaphorecreatesuccess!
iemaphoreopensuccess!
,hreadcreatesuccess!
:eleaseSemaphoreerr=0
ieinaphoreReleaseSuccess.rc=l
'aitforsingleobjectERR=0
lRes=0
fowinThread.
Semaphorecreatesuccess!
iemaphoreopensuccess!
'hreadcreatesuccess!
S3E:\users\mzyli\documents\visualstudio2010\Projects\1234569\Debug\1234569.exe
ISemaphorecreatesuccess!
JSemaphoreopensuccess!
*Threadcreatesuccess!
8NowinThread.
ReleaseSemaphoreerr=0
'aitforsingleobjectERR=0
SemaphoreReleaseSuccess.rc=l
IlRes=0
//1234569.cpp:定i§義°?控?制?臺(tái)F§應(yīng)?|用@?程”一序.…的1?入”?口亡點(diǎn),
//
Sinclude"stdafx.h"
include”1234569.h〃
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
//唯i§一°?的V?應(yīng)?|用??程"r序,…對(duì)?象"?
CWinApptheApp;
usingnamespacestd;
staticHANDLEhl;
staticHANDLEh2;
staticHANDLEh3;
staticHANDLEhHandlei=NULL;
staticHANDLEhHand1e2=NULL;
staticHANDLEhHandle3=NULL;
voidfunc();
voidfund();
voidfune();
int_tmain(intargc,TCHAR*argv[],TCHAR*envp[])
(
intnRetCode=0;
DWORDdwThreadID1;
DW0RDdRes,err;
。//LPCWSTR1PCWSTR=nSemaphoreNamel";
//hHandle1=CreateSemaphore(NULL,0,1,NULL);//CREATEASEMAPHORE
。hHandlel=CreateSemaphore(NULL,0,1,L^SemaphoreName1");//CREATEASEMAPH
ORE
。if(hHandle1=NULL)printfCzSemaphorecreateERR!\n〃);
elseprintf("Semaphorecreatesuccess!\n");
。hHandle1=OpenSemaphore(SYNCHRONTZEISEMAPHOREMODIFY__STATE,NULL,L'SemaphoreN
amelH;//OPENSEMAPHORE
if(hHandlei==NULL)printf(''SemaphoreopenERR!\nz,);
。elseprintf("Semaphoreopensuccess!\n");
ohl=CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_R
OUTINE)func,(LPVOTD)NULL,0,&dwThreadID1);//CREATECHILDTIIREAD
aif(h1==NULL)printf(MThreadcreateERR!\n");
。elseprintf(z,Threadcreatesuccess!\n,z);
。dRes=WaitForSingleObject(hilandlel,INFINITE);//WAITFORCHILDTHREADEND
。err=GetLastError0;
。printf(z,Waitforsing1eobjectERR=%d\n”,err);
if(dRes==WAIT_TIME0UT)printfCT1ME01TOFdRes=%d\nz,,dRes);
。elseif(dRes=WAIT_0BJECT_0)printf(Z,WAIT_OBJECTdRes二%d\n〃,dRes);
elseif(dRes==WAIT_ABANDONED)printfCWA!T_ABANDONEDdRes=%d\n",dRes);
e1seprintf(〃dRes二%d\n〃,dRes);
C1oseHandle(hl);
。CloseHandle(hHandle1);
hflandle2=CreateSemaphore(NULL,0,1,L"SemaphoreName2");//CREATEASEMAPH
ORE
if(hHand1e2==NULL)printf("SemaphorecreateERR!\n");
elseprintf(11Semaphorecreatesuccess!\n〃);
ohHandle2=0penSemaphore(SYNCHRONIZEISEMAPH0RE_M0DIFY_STATE,NULL,L'Sem
aphoreName2z/);//OPENSEMAPliORE
。if(hHand1e2==NULL)printf(/zSemaphoreopenERR!\n");
elseprintf(''Sernaphoreopensuccess!\nz,);
h2=CreateThread((LPSECURTTYAHRIBUTES)NULL,0,(LPTHREAD.STARTROUTINE)fund,(L
PVOID)NULL,0,&dwThreadlD1);//CREATECHILDTHREAD
if(h2==NULL)printf("ThreadcreateERR!\n");
。elseprintf("Threadcreatesuccess!\n");
dRes=WaitForSingleObject(hHandle2,INFINITE);//WAITFORCHILDTHREADEND
。err=GetLastError();
printf(?,WaitforsingleobjectERR=%d\n”,err);
z,
if(dRes==WAIT_TIMEOUT)printf(T1MEOUTOFdRes二%d\n”,dRes);
eIseif(dRes=WAIT_0BJECT_0)printfCWAIT_OBJECTdRes=%d\n,z,dRes);
elseif(dRes==WAIT_ABANDONED)printfCWA1T_ABANDONEDdRes=%d\nz/,dRes);
elseprintf(〃dRes=%d\n,\dRes);
。CloseHandle(h2);
oCloseHandle(hHand1e2);
hHand1e3=CreateSemaphore(NULL,0,1,L11SemaphoreName3/Z);//CREATEASEMA
PHORE
z,
if(hHandle3—NULL)printf(SemaphorecreateERR!\n〃);
elseprintf("Semaphorecreatesuccess!\n,z);
hilandle3=OpenSemaphore(SYNCUR0NIZE|SEMAPHORE_MODIFY_STATE,NULL,L'Semaph
oreName3M;//OPENSEMAPHORE
,z
if(hHandle3二二NULL)printf(SemaphoreopenERR!\n");
elseprintf("Semaphoreopensuccess!\n");
h3=CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_ROUTI
NE)fune,(LPVOID)NULL,0,&dwThreadTD1);//GREATECIIILDTHREAD
?if(h3==NULL)printf("ThreadcreateERR!\n");
elseprintf("Threadcreatesuccess!\n,z);
dRes二WaitForSingleObject(hHandle3,TNFINITE);//WATTFORCHILDTHREAD
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 健身私教課程合同及退款協(xié)議
- Unit 1 My classroom (教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版英語四年級(jí)上冊(cè)
- 10《傳統(tǒng)美德 源遠(yuǎn)流長(zhǎng)》 教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治五年級(jí)上冊(cè)統(tǒng)編版
- 2025屆高考生物備考教學(xué)設(shè)計(jì):第六章 遺傳的分子基礎(chǔ) 課時(shí)2 DNA分子的結(jié)構(gòu)、復(fù)制及基因的本質(zhì)
- Module 2 Unit 2 There are lots of beautiful lakes in China(教學(xué)設(shè)計(jì))-2024-2025學(xué)年外研版(三起)英語六年級(jí)上冊(cè)
- Module 10 Unit 2 教學(xué)設(shè)計(jì) 2024-2025學(xué)年外研版九年級(jí)英語上冊(cè)
- 白坪鄉(xiāng)農(nóng)貿(mào)市場(chǎng)施工合同
- 框架建筑合同范本
- 11 白樺 第一課時(shí) 教學(xué)設(shè)計(jì) -2023-2024學(xué)年語文四年級(jí)下冊(cè)統(tǒng)編版
- 土地承包合同范本個(gè)人
- 新款h2夜視移動(dòng)電源
- 《Python數(shù)據(jù)可視化》教學(xué)設(shè)計(jì)
- 紙箱車間雙色水性印刷機(jī)作業(yè)指導(dǎo)書及質(zhì)量標(biāo)準(zhǔn)
- 2022-2023年(備考資料)輻射防護(hù)-醫(yī)學(xué)x射線診斷與介入放射學(xué)歷年真題精選一含答案10
- 淺談班級(jí)的文化建設(shè)課題論文開題結(jié)題中期研究報(bào)告(經(jīng)驗(yàn)交流)
- PMC年終個(gè)人總結(jié)精編ppt
- DBJ∕T 15-129-2017 集中空調(diào)制冷機(jī)房系統(tǒng)能效監(jiān)測(cè)及評(píng)價(jià)標(biāo)準(zhǔn)
- U8-EAI二次開發(fā)說明
- Q∕GDW 11612.41-2018 低壓電力線高速載波通信互聯(lián)互通技術(shù)規(guī)范 第4-1部分:物理層通信協(xié)議
- 新人教版數(shù)學(xué)四年級(jí)下冊(cè)全冊(cè)表格式教案
- 疫情期間離市外出審批表
評(píng)論
0/150
提交評(píng)論