Linux高级环境编程实验报告4

Linux高级环境编程实验报告4

ID:37711912

大小:151.00 KB

页数:8页

时间:2019-05-29

Linux高级环境编程实验报告4_第1页
Linux高级环境编程实验报告4_第2页
Linux高级环境编程实验报告4_第3页
Linux高级环境编程实验报告4_第4页
Linux高级环境编程实验报告4_第5页
资源描述:

《Linux高级环境编程实验报告4》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、作业报告学生姓名:学号:指导教师:学生E-mail:一、作业名称:多队列线程池的应用二、作业要求设计并实现一个整数加法运算的线程池,其中能够接收三种线程:1、用户线程,向线程池(主控线程)提交加法运算请求;2、主控线程,接收用户线程提出的加法运算请求,并负载均衡地将请求下发到若干计算线程;3、若干计算进程,接收来自于主控线程转发的加法计算请求,完成加法计算,并将计算结果直接返回给用户线程。另外,这三种线程都应具有各自的消息队列,来完成加法计算请求的发送与转发,并返回计算结果。具体业务要求:1)、用户线程需同时向主控线程提出>=

2、1000个加法计算请求2)、用户线程需要验证是否收到了这些加法计算的结果三、设计与实现根据作业要求分析,需要设个三中线程,而且三种线程之间还要相互通信和协作,图3-1显示了它们之间的通信关系。用户线程向线程池中的主控线程发送消息,主控线程将消息负载均衡的分发给线程池中的若干计算线程。为了实现负载均衡分发,将所有的线程形成一个循环链表,设置一个指针,该指针总是指向刚被分发消息的下一个计算线程,则所有的线程获取消息的机会均等。计算线程计算完成后直接将消息计算结果返回给用户线程。设计实现的关键操作是线程池中主控线程分发线程,计算线程

3、组成循环链表,完成消息计算,将消息结果返回给用户线程。图3-1三种线程间通信下面给出线程池,计算线程和主控线程的具体实现。代码清单3.1-a线程池的实现classCLMyCalculateThreadPro;CLThreadPool::CLThreadPool()//未指定线程数时默认构造的线程数为6{ThreadNumber=6;MainThread="mainThread";ThreadCount=NULL;//计算线程队列,初始为空}CLThreadPool::CLThreadPool(intthreadNumber){

4、if(threadNumber<=0){threadNumber=6;}ThreadNumber=threadNumber;MainThread="mainThread";//主控线程的名字ThreadCount=NULL;}CLThreadPool::~CLThreadPool(){}voidCLThreadPool::InitThreadPool()//初始化线程池{//创建主控线程CLThreadProxyproxyMain(newCLThreadMainProcessor(this),MainThread.c_str(

5、),false);proxyMain.Run(0);for(inti=1;i<=ThreadNumber;i++)//创建若干计算线程{CLThreadQueue*thread=newCLThreadQueue;chart[30];std::strings;sprintf(t,"%d",i);s=t;thread->ThreadName="thread_"+s;thread->Next=ThreadCount;ThreadCount=thread;CLThreadProxyproxy(newCLMyMsgProcessor,(

6、thread->ThreadName).c_str(),false);proxy.Run(0);}CurrentThread=ThreadCount;}voidCLThreadPool::UninitThreadPool(){}//用户向主控线程发送消息的实体voidCLThreadPool::PostMessageToMainThread(CLMessage*Msg){CLExecutiveNameServer::PostExecutiveMessage(MainThread.c_str(),Msg);}代码清单3.1-a是

7、线程池的具体实现,在构造函数中,设置线程池中计算线程的数目,默认情况下为6;设置线程循环队列指针初始为空等。在线程池的初始化函数CLThreadPool::InitThreadPool中创建主控线程和若干计算线程。用户调用PostMessageToMainThread函数向主控线程发送消息实体,参数是指向CLMessge类的对象。代码清单3.1-b计算线程的实现CLMyCalculateThreadPro::CLMyCalculateThreadPro(){}CLMyCalculateThreadPro::~CLMyCalcu

8、lateThreadPro(){}//将加法消息和退出消息的执行注册到消息的回调函数中CLStatusCLMyCalculateThreadPro::Initialize(CLMessageLoopManager*pMessageLoop,void*pContext){pMe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。