收藏 分销(赏)

用多线程模拟汽车司机与售票员需求分析试验报告.doc

上传人:w****g 文档编号:4087374 上传时间:2024-07-29 格式:DOC 页数:4 大小:22.04KB 下载积分:5 金币
下载 相关 举报
用多线程模拟汽车司机与售票员需求分析试验报告.doc_第1页
第1页 / 共4页
用多线程模拟汽车司机与售票员需求分析试验报告.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
操作系统:用多线程模拟汽车司机与售票员需求分析试验报告 本实验利用多线程模拟汽车司机与售票员之间的协同工作即同步过程。一方面只有售票员把车门关好了司机才能开车,因此,售票员关好车门应通知司机开车;另一方面,只有汽车已经停下,售票员才能开门上下客,故司机停车后应通知售票员。实验的结果是在屏幕显示二者的同步过程。 一、 设计过程 基本原理:在Windows的一个进程内包含一个或多个线程,32位Windows环境下的WIN32 API提供了多线程应用程序开发所需的接口函数,本实验就是C++语言编写的WIN32 API的多线程编程。 具体过程: 1. 创建两个信号对象,设定初始值; 2. 创建两个子线程函数,一个为司机的操作过程,一个为售票员的操作过程。我们在这里设定站点数为10个;在司机操作的子线程中,用一个while循环,当到最后一站时,就退出,此时,程序运行结束。 3. 编写主线程函数,在其中调用两个子线程。 二、 源代码 #include <iostream。h〉 #include <windows。h> HANDLE hSemaphore1=CreateSemaphore(NULL, 0, 1, NULL); HANDLE hSemaphore2=CreateSemaphore(NULL, 0, 1, NULL); int station=1; DWORD WINAPI ThreadDriver( LPVOID LpParameter ) { while(station〈=10) { cout〈<”司机正常行车"<〈endl; cout<<"前方为"<〈station〈<”站点”〈〈endl; if(station==10) { cout〈〈"终点站到了”〈<endl; return 0; } cout〈〈"到达"〈〈station〈〈"站点”〈<endl; ReleaseSemaphore(hSemaphore2,1,NULL); WaitForSingleObject(hSemaphore1,INFINITE); cout<〈"离站开车”<〈station<<endl<<endl〈〈endl; Sleep(500); station++; } return 0; } DWORD WINAPI ThreadConductor( LPVOID LpParameter ) { while(1) { WaitForSingleObject(hSemaphore2,INFINITE); cout<<"售票员开门”<<endl; Sleep(1000); cout<〈”乘客正在上车”〈<endl; Sleep(6000); cout<〈”售票员关门”<<endl; cout<<"售票员向刚上车售票”<〈endl; ReleaseSemaphore(hSemaphore1,1,NULL); Sleep(1000); } return 0; } int main() { HANDLE hDriver; HANDLE hConductor; cout<<"多线程模拟司机售票员同步过程\n"; cout〈<”——------———-——-———-—-———-——-\n”; hDriver=CreateThread(NULL,0,ThreadDriver,NULL,0,NULL); Sleep(10); hConductor=CreateThread(NULL,0,ThreadConductor,NULL,0,NULL); Sleep(300000); CloseHandle(hDriver); CloseHandle(hConductor); return 0; } 三、 运行结果: 多线程模拟司机售票员同步过程 —-----—-—-——-—-—--——--—-—-—— 司机正常行车 前方为1站点 到达1站点 售票员开门 乘客正在上车 售票员关门 售票员向刚上车售票 离站开车 司机正常行车 前方为2站点 到达2站点 售票员开门 乘客正在上车 售票员关门 售票员向刚上车售票 离站开车 司机正常行车 前方为3站点 到达3站点 售票员开门 乘客正在上车 售票员关门 售票员向刚上车售票 离站开车 司机正常行车 前方为4站点 到达4站点 售票员开门 乘客正在上车 售票员关门 售票员向刚上车售票 离站开车 司机正常行车 前方为5站点 到达5站点 售票员开门 乘客正在上车 售票员关门 售票员向刚上车售票 离站开车 司机正常行车 前方为6站点 到达6站点 售票员开门 乘客正在上车 售票员关门 售票员向刚上车售票 离站开车 司机正常行车 前方为7站点 到达7站点 售票员开门 乘客正在上车 售票员关门 售票员向刚上车售票 离站开车 司机正常行车 前方为8站点 到达8站点 售票员开门 乘客正在上车 售票员关门 售票员向刚上车售票 离站开车 司机正常行车 前方为9站点 到达9站点 售票员开门 乘客正在上车 售票员关门 售票员向刚上车售票 离站开车 司机正常行车 前方为10站点 终点站到了 四、 程序结果分析 从运行结果看,基本上模拟了司机和售票员的同步过程。此程序简单的实现了线程间的同步过程,即运用win32提供的接口函数,主要是CreateThread,WaitForSingleObject,ReleaseSemaphore这几个函数实现主要功能. 程序还有很多欠缺,需要做进一步的改进。比如可以实际线路的同步过程,考虑司机与售票员同步过程中的更多现实因素,比如,提供站点时间、上下车人数等等,将其运用到实际当中去。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 行业资料 > 机械/制造/汽车

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服