实践四用Win32同步对象解决有限缓冲区问题.doc

实践四用Win32同步对象解决有限缓冲区问题.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实践四:用Win32同步对象解决有限缓冲区问题 完成人: 班级 学号:0506580205 姓名:李立 报告日期: 2009-01-02 一、实践内容简要描述 1、实践目标 用Win32同步对象解决有限缓冲区问题。 2、实践内容 写一个多线程实现C/C++语言程序:一些线程负责找出某个数据范围的素数,并放到一个数组中,另一些线程负责将数组中的素数按次序取出,并显示出来。要求定义一个全局变量的数组int prime[9]用于存放找到的待显示的素数,要理解成“环形缓冲区”。 二、实践报告主要内容 1、设计思路 读取文件内容,通过表示字母W或者D来决定创建的是写线程还是读线程。通过循环来创建线程。设计一个全局变量int count = 0,用于判断缓冲区的满和空,并结合同步对象来实现线程之间的通信,在写或读线程结束自身的同时通知对方,对方也同时结束线程并返回主线程,结束任务。 2、主要数据结构 int prime[9]; //环形缓冲区 int count = 0; //缓冲区计数 HANDLE h_Full; //该句柄用于通知读线程缓冲区中有素数可读 HANDLE h_Empty; //该句柄用于通知写线程缓冲区中有空位可写 3、主要代码分析 #include windows.h #include conio.h #include fstream.h #include stdio.h #define MAX_THREAD_NUM 64 struct ThreadInfo { int serial; char entity; int from; int to; }; int prime[9]; int count = 0; HANDLE h_Full; HANDLE h_Empty; HANDLE h_Thread[MAX_THREAD_NUM]; ThreadInfo thread_info[MAX_THREAD_NUM]; void Control_Thread( char* file ); void RP_ReaderThread(void* p); void RP_WriterThread(void* p); //////////////////////////////////////////////////////// // main fuction //////////////////////////////////////////////////////// int main( int agrc, char* argv[] ) { char ch; for(int i =0;i 9;i ++) prime[i] = 0; while ( TRUE ) { // Cleare screen system( cls ); // display prompt info printf(*********************************************\n); printf( 1.Start test\n); printf( 2.Exit to Windows\n); printf(*********************************************\n); printf(Input your choice(1or2): ); // if the number inputed is error, retry! do{ ch = (char)_getch(); }while( ch != 1 ch != 2); system ( cls ); if ( ch == 1) Control_Thread(ex4.dat); else if ( ch == 2) return 0; printf(\nPress any key to finish this Program. \nThank you test this Proggram!\n); _getch(); } //end while } //end main /////////////////////////////////////////////////////////////// // Reader Priority fuction // file: filename /////////////////////////////////////////////////////////////

文档评论(0)

00625 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档