操作系统课设Windows多线程控制台程序_第1页
操作系统课设Windows多线程控制台程序_第2页
操作系统课设Windows多线程控制台程序_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳理工大学课程设计专用纸沈阳理工大学课程设计专用纸11目录 HYPERLINK l _TOC_250006 一、课程设计目的及要求1 HYPERLINK l _TOC_250005 二、相关知识1 HYPERLINK l _TOC_250004 三、题目分析2 HYPERLINK l _TOC_250003 四、概要设计2 HYPERLINK l _TOC_250002 五、代码及流程3 HYPERLINK l _TOC_250001 六、运行结果7 HYPERLINK l _TOC_250000 七、设计心得8七、参考文献8一、课程设计目的及要求Windows 多线程控制台程序Window

2、s 进程和线程关系的理解,掌握多线程程序的执行和编写技巧。Windows N N 由命令行传递给系统二、相关知识控制台的概念?控制台是一个用来提供字符模式 I/O 的接口。这种处理器独立的机制使导入一个存在的字符模式程序或创建一个新的字符模式工具和程序变的容易。Windows下进程的创建Windows 的进程和线程模型被描述成”多进程,基于单进程的多线程”。在创建一个线程时,Windows 会做大量的工作创建一个新的地址空间,为进程分配资源以及创建一个基线程。CreateThread HANDLE CreateThread(LPSECURITY_ATTRIBUTESlpThreadAttrib

3、uts/ SDDWORD / initial stack LPTHREAD_START_ROUTINElpStartAddres,/ thread function LPVOID / thread argumentDWORDdwCreationFlag,/ creation optionLPDWORD lpThreadId/ thread identifier);实验准备:要实验的Windows 下的多线程实验,应做如下准备:”Win32 Console An empty project选”工程”的”设置”选项,在”设置”中选择“C/C+”Project Option”中, 将“MTd”(。沈

4、阳理工大学课程设计专用纸1 选项以上两步对实验成功至关重要,否则,即是代码无误,在连接时同样会出现问题。三、题目分析Windowsvoid main(int argc,char 利用获取的参数,建立相应数量的线程。线程的建立可以用 Windows API 提供的库函数CreateThread() CreateThread() lpStartAddress 是线程执行操作的函数的路口地址,lpParameter 可以接受新创建的线程的参数,其余看参数使用默认的。在创建一个进程的同时系统会创建一个主线程Sleep() 子线程去执行。将需要完成的任务函数,函数名作为路口地址作为子线程的第三个参数。四

5、、概要设计本程序的设计思想是,创建 N 实现计时需要或得系统的当前时间利用 GetSystemTime()获得,由系统的当前时间加上指定的执行时间即可得到任务执行的终止时间。全局变量static int runFlag=TRUE 作为状态2沈阳理工大学课程设计专用纸沈阳理工大学课程设计专用纸 PAGE PAGE 6标记,到达终止时间,置runFlag=FALSE,这样就可以终止线程的执行。设计的任务的是用 N N 个线程间的通信,如果生成的数不在数组里则与猜的数进行比较。五、代码及流程STARTparseArgToInt()STARTparseArgToInt()while()GetSyste

6、mTime()CreateThread()10*equipData+(inNumChari-48)for (i=0;ithreadNum;i+)ithreadNumwhile (runFlag)runFlag=FALSErunFlag=TURESleep()int i,flag;printf()runFlagENDY判断,猜数等一系列操作returnN图 2 程序流程图主要代码#include #include #include #include #include #define N 5 #define Type static int runFlag=TRUE; static int r=0;

7、int a1000; int final;DWORD WINAPI threadWork(LPVOID threadNo); int parseArgToInt(char *inNumChar);Type eRandom(int upLimit);typedef structint data;INTEGER;void main(int argc,char *argv)/主函数unsigned int runTime; int i;int threadNum;SYSTEMTIME WORD stopTimeMinute,stopTimeSecond; DWORD targetThreadID;i

8、nt p;if(argc!=3)printf(please enter NThread n); return;srand(unsigned int)time(NULL); p=rand()/327; final=(int)eRandom(p);printf(The final is %d n,final);threadNum=parseArgToInt(argv1); runTime=parseArgToInt(argv2); GetSystemTime(&now);printf(Starting ate system time %d, %d, %dn,now.wHour,now.wMinut

9、e,now.wSecond); stopTimeSecond=(now.wSecond+(WORD)runTime)%60; stopTimeMinute=now.wMinute+(now.wSecond+(WORD)runTime)/60;INTEGER *tmpInt;for (i=0;idata=i;CreateThread(NULL,0,threadWork,tmpInt,0,&targetThreadID); Sleep(100);while (runFlag)GetSystemTime(&now);if (now.wMinute=stopTimeMinute)&(now.wSeco

10、nd=stopTimeSecond) runFlag=FALSE;Sleep(1000);printf(Time over and not winner!n); GetSystemTime(&now);printf(End ate system time %d, %d, %dn,now.wHour,now.wMinute,now.wSecond);DWORD WINAPI threadWork(LPVOID threadNo)/线程执行的函数int i,flag; int k,p,t;int tNo=(INTEGER*)threadNo)-data; int sleepTime;DWORD r

11、esult=0; srand(unsigned int)time(NULL);while (runFlag)flag=1; k=rand()/327; p=(int)eRandom(k); t=(int)eRandom(p);for (int j=0;j=0&inNumChariupLimit); return tmpData;六、运行结果运行结果截图:在指定的时间内出现获胜者图 3 结果图 1在制定的时间内没有出现获胜者图 4 结果图 27沈阳理工大学课程设计专用纸七、设计心得通过这次的课程设计是我对操作系统有了更进一步的了解有理由要将这门课学好。了解操作系统工作机制,调度方法,以及基本原则。八、参考文献1刘振安、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论