版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、多线程编程实践 闻 炳 海,Windows API 线程函数 MFC 线程函数,提 纲,多线程起源,并发执行: 多个进程或线程先后开始执行,都还没有停止。 目的:多任务同时执行 好处: 提高运行速度 提高硬件利用率 改善用户体验 技术: 进程 线程 超线程,在CPU多核化, 多线程编程更加重要,多线程起源,进程:程序在一个数据集合上的一次执行过程。 线程: 是进程中的一个实体,是被系统独立调度和分派的基本单位。 线程自己不拥有系统资源,它与同属一个进程的其它线程共享进程所拥有的全部资源。 两个进程互相独立,连个线程共享数据空间。 CPU调度进程开销很大,而调度线程开销小的多。 线程间的通讯手段
2、也更多更简便。,创建线程,Windows API: CreateThread() hThread = CreateThread ( 参数说明: lpThreadAttributes:指向安全属性结构,设为NULL,用缺省值。 dwStackSize,线程堆栈大小,一般取0,缺省设置。 lpStartAddress,指向线程函数的指针,必须以下列形式声明:DWORD WINAPI ThreadProc( PVOID pParam ) lpParameter:向线程函数传递的参数。 dwCreationFlags :线程标志, 创建挂起线程或立即激活。 lpThreadId:保存新线程的id。 h
3、Thread:函数成功,返回线程句柄;函数失败返回false。,简单的线程例子,#include int main( ) srand( (unsigned)time(0) ); for( int i=0; i2; +i ) if( NULL = CreateThread (0, 0, MyThread, (void*)i, 0, 0) ) return -1; while( ! kbhit() ) coutFlag T0 T1endlflush; Sleep( 100 ); return 0; ,int Flag = 0, T0 = 0, T1 = 0; DWORD WINAPI MyThre
4、ad( LPVOID Param ) int Id = int(Param); coutI am the thread: Idendlflush; while( true ) if( Id = 0 ) +Flag; +T0; else -Flag;+T1; for(int i=0; i1000000; i+ ); return 0; ,简单的线程例子,线程的控制,设置线程优先级: BOOL SetThreadPriority(HANDLE hThread,intnPriority);THREAD_PRIORITY_LOWEST,THREAD_PRIORITY_BELOW_NORMAL,THRE
5、AD_PRIORITY_NORMAL,THREAD_PRIORITY_ABOVE_NORMAL,THREAD_PRIORITY_HIGHEST, 挂起线程:系统将不再分配CPU去执行线程。 DWORD ResumeThread(HANDLEhThread); 恢复线程:重新投入执行DWORD SuspendThread(HANDLE hThread); 终止线程:(三种方式)VOID ExitThread(UINTfuExitCode );BOOL TerminateThread(HANDLE hThread,DWORD ExitCode);,Windows APIs,Windows API
6、线程函数 MFC 线程函数,提 纲,MFC中的线程,MFC创建线程: CWinThread* AfxBeginThread( ThreadProc, LPVOID pParam ); 线程函数: UINT MyThreadFunction( LPVOID pParam ); MFC结束线程: void AFXAPI AfxEndThread( UINT ExitCode,BOOL bDelete=TRUE );,临界区:CCriticalSection 保证一次只能有一个线程访问一个数据对象,只能用于线程间同步 互斥量:CMutex 多个应用(多个进程) 同时存取相应资源,可以在进程间使用 信号量:CSemaphore 同时可以有多个线程使用一组相应资源,资源计数 事件: CEvent 必须等待某些事件发生后才能存取相应资源 头文件:#iclude ,MFC线程同步,单锁:CSingleLock:锁定一个资源 多锁:CMultiLo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 48283-2026航天器检漏试验方法
- 2025~2026学年广东湛江市雷州市龙门镇某校北师大版上册三年级数学阶段学情自测卷【附答案】
- 2027届辽阳市重点中学八上数学期末达标检测模拟试题含解析
- AI在中医八段锦智能指导中的应用
- 大理石地面干铺及防泛碱处理方案
- 幕墙安装动火作业监护规程
- 2026年车检站培训试题及答案
- 2025-2026学年浙江省江山市初中历史九年级期末上册高分预测黑金试题(附答案)
- Originality(原创性)能力测试试题及详细答案
- OOPT岗位综合能力测试试题(含详细答案解析)
- 《汕头PS成功案例》课件
- 2026年广东省广州市番禺区高三综合测试数学试题(含答案解析)
- 2026年校招:太平洋保险集团试题及答案
- 2026年全国教师师德师风及法律知识网络知识竞赛题库及答案
- 中国农业银行总行2027届校园招聘笔试模拟试题及答案解析
- 豆包工作从0到1完全指南:AI办公Agent实战教程
- (2025)儿童胸痛诊疗专家共识
- 2026年金融安全专家考试题库及答案
- 2026年天津市中考英语试题(含答案)
- 2026年幼儿园思想政治课
- 苏豪控股集团二级子公司招聘笔试题库2026
评论
0/150
提交评论