线程的编程实现(操作系统

线程的编程实现(操作系统

ID:46920094

大小:229.66 KB

页数:42页

时间:2019-11-30

线程的编程实现(操作系统_第1页
线程的编程实现(操作系统_第2页
线程的编程实现(操作系统_第3页
线程的编程实现(操作系统_第4页
线程的编程实现(操作系统_第5页
资源描述:

《线程的编程实现(操作系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章多线程返回目录内容摘要:创建线程实现线程间通信利用线程同步技术保障数据安全9.1创建线程学习目标调用AfxBeginThread()来启动线程。9.1返回第9章程序的实现步骤利用AppWizard生成程序框架(ThreadTest)编辑资源添加菜单响应函数编写线程函数在视中输出信息9.1步骤1生成程序框架(MenuTest)项目名称:ThreadTest选择单文档界面应用程序(Singledocument)9.1步骤2编辑资源1.编辑菜单资源线程Pop-up选中CaptionID启动线程ID_THREAD_START其他任务ID_TREEAD_OTHER2.编辑对话框资源9.1

2、IDD_DIALOG_THRAEDCDlgThread步骤3添加菜单响应函数ClassNameObjectsIDsMessagesCThreadTestViewID_THREAD_STARTCOMMANDCThreadTestViewID_TREEAD_OTHERCOMMAND9.1voidCThreadTestView::OnThreadStart(){HWNDhWnd=GetSafeHwnd();AfxBeginThread(TreadProc,hWnd,THREAD_PRIORITY_NORMAL);}voidCThreadTestView::OnThraedOther(){C

3、DlgThreaddlg;dlg.DoModal();}步骤4编写线程函数1.在视类中添加两个成员变量。并在构造函数中初始化9.1classCThreadTestView:publicCView{……public:CStringm_strMessage;intm_iTime;……}CThreadTestView::CThreadTestView(){m_strMessage="没有线程启动";m_iTime=0;}步骤5在视中输出信息9.1voidCThreadTestView::OnDraw(CDC*pDC){CThreadTestDoc*pDoc=GetDocument();AS

4、SERT_VALID(pDoc);//TODO:adddrawcodefornativedataherecharchNumber[6];itoa(m_iTime,chNumber,10);pDC->TextOut(30,30,m_strMessage);pDC->TextOut(30,50,chNumber);}2.线程函数9.1UINTTreadProc(LPVOIDparam){CThreadTestApp*pApp=(CThreadTestApp*)AfxGetApp();CMainFrame*pMainFrame=(CMainFrame*)pApp->GetMainWnd()

5、;CThreadTestView*pView=(CThreadTestView*)pMainFrame->GetActiveView();pView->m_strMessage="启动了一个线程!";while(pView->m_iTime<20){::Sleep(1000);pView->m_iTime++;pView->Invalidate();}pView->m_iTime=0;pView->m_strMessage="线程结束!";return0;}基本知识CWnd类的GetSafeHwnd();返回窗口句柄AfxBeginThread();线程函数(返回UINT)CMain

6、Frame::GetActiveView();::Sleep(1000);9.19.2线程间通信学习目标1.使用全局变量实现线程间通信2.使用消息实现线程间通信3.使用CEvent类实现线程间通信9.2返回第9章1.使用全局变量实现线程间通信在上一节程序的基础上,进行以下操作:(1)在“线程”菜单中添加菜单项:“终止线程”,ID_THREAD_STOP。(2)在ThreadTestView.cpp文件中添加一个全局变量threadController,用来控制线程是否继续。添加方法是在ThreadTestView.cpp的最上面,在endif下面添加下面的语句:volatileint

7、threadController;(3)在视类中为“停止线程”添加消息处理函数OnThreadStop()。9.2voidCThreadTestView::OnThreadStop(){threadController=0;}1.使用全局变量实现线程间通信4.修改OnThreadStart()函数,代码如下所示:9.2voidCThreadView::OnStartthread(){threadController=1;HWNDhWnd=GetSafeHw

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

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

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