- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
作业报告
学生姓名:学号:指导教师:
学生E-mail:
一、作业名称:英文统计词频程序的实现
二、作业要求
以英文文章为例,利用执行体程序库实现一个多进程词频统计的程序。对于给定的多个目录,并发地统计每个目录下的所有文件〔假设每个文件中只有英文字符〕中单词出现的次数,并最终汇总出在给定目录下所有文件中单词出现次数,然后记录下来。该过程要求采用多线程协作方式。
三、设计与实现
1、设计思路
首先分析程序设计的需求,要对多个目录下的文件进行词频统计,如果只用一个进程顺序的对各个目录下各个文件进行计算,会消耗很大时间,另外也无法充分发挥执行体程序库的优势。而且要求采用多线程协作方式,这样很自然的会想到创立一些进程去各个目录下进行统计,最后用一个进程统一管理这些进程,那么父进程和子进程的思想就出来了。这个过程中,我们是将一个任务划分成了多个任务并行地去执行,最后把这些子任务的执行结果汇总起来就是整个任务的结果,其实这就是Map-Reduce思想——把整个任务执行过程划分为映射〔Map〕和化简〔Reduce〕两个阶段。
在词频统计程序设计中,这两个阶段具体工作划分如下:
1、映射〔Map〕阶段:
①.主进程根据输入的目录数量创立多个子进程,每个子进程处理一个目录;
②.子进程获得目录名后,遍历整个目录,统计该目录下的每个文件的单词词频,作为中间结果保存。
③.子进程统计结束后把中间结果发送给主进程。
2、化简〔Reduce〕阶段:
①.父进程接收子进程发送过来的中间结果,并进行汇总;
②.子进程发送结束后父进程向其发送退出消息,子进程接收到后退出;
③.父进程检查所有子进程是否全部退出,假设是,那么工作结束,父进程退出,否那么父进程继续等待所有子进程结束。
图3-1协议设计
图3-1显示了主进程与子进程之间的消息协议,其消息通信流程也比拟清楚。
2、词频统计程序的实现
代码清单
classCLFatherInitMsg:publicCLMessage
{
public:
CLFatherInitMsg():CLMessage(FATHER_INIT_MESSAGE_ID)
{}
public:
stringdirname
};
消息由消息头部、消息标志ID和数据组成。代码清单给出了
CLFatherInitMsg的声明,该类继承了CLMessage类。其中包含一个string类型的dirname变量,用来存放消息中携带的目录名。此消息是由父进程发送给子进程的初始化消息,该目录名即为子进程要进行单词统计的目录名。
代码清单
intmain(intargc,char**argv)
{
……
try
{
if(!CLLibExecutiveInitializer::Initialize().IsSuccess())
{
coutInitializeerrorendl;
return0;
}
CLFatherWordCountObserver*pFatherWordCountObserver=newCLFatherWordCountObserver;
for(inti=1;iargc;i++)
pFatherWordCountObserver-PushDirname(argv[i]);
pFatherWordCountObserver-Init();
CLNonThreadForMsgLoopfather_nonthread(pFatherWordCountObserver,father_pipe,EXECUTIVE_BETWEEN_PROCESS_USE_PIPE_QUEUE);
father_nonthread.RegisterDeserializer(CHILD_INIT_MESSAGE_ID,newCLChildInitMsgDeserializer);
father_nonthread.RegisterDeserializer(CHILD_SEND_REQUEST_MESSAGE_ID,newCLChildSendRequestMsgDeserializer);
father_nonthread.RegisterDeserializer(INTERMEDIATE_RESULT_MESSAGE_ID,newCLIntermediateResultMsgDeseriali
您可能关注的文档
- 培优3--二次函数与一元二次方程.doc
- I2CBus与SMBus间技术差异.doc
- 金科王府户型图.ppt
- 语文二轮复习第三部分-现代文阅读-语文(新课标)-全国卷地区专用.ppt
- 降低800轧线电气系统故障率.ppt
- GL-002-银行主数据的维护.doc
- 地理中图版必修一月考三试题.doc
- 重整装置简介.ppt
- 高二英语试卷讲评课课件-人教版.ppt
- 马克思主义发展史(中国化).ppt
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
- DB62T 4172-2020 玉米品种 酒623规范.pdf
- DB62T 4160-2020 在用真空绝热深冷压力容器综合性能在线检测方法.pdf
- DB62T 4164-2020 辣椒品种 酒椒1号.pdf
- DB62T 4133-2020 公路隧道地质超前预报机械能无损探测技术规程.pdf
最近下载
- 2024浙江省执业药师继续教育答案-腰椎间盘突出症的中西医治疗新进展和康复策略.docx VIP
- 物联网技术在智慧教育中的应用.docx VIP
- 吃外卖的危害.pptx VIP
- 乡镇卫生院二类疫苗管理规定乡镇疫苗管理制度.docx
- 四川省广元市2023-2024学年八年级下学期期末数学试题(无答案).docx
- 专题复习:2022高考历史核心考点微专题—— 市镇经济和市民生活(课件).pptx
- GB 21148-2020:足部 防护 安全鞋.pdf
- (高清版)B/T 22638.11-2023 铝箔试验方法 第11部分:力学性能的测试.pdf VIP
- GE-9F燃机-Mark-Ⅵ控制界面-中文版.pdf
- 卫生健康局乡村医生规范培训工作总结.docx VIP
文档评论(0)