多线程编程实践

多线程编程实践

ID:44400063

大小:242.50 KB

页数:13页

时间:2019-10-21

多线程编程实践_第1页
多线程编程实践_第2页
多线程编程实践_第3页
多线程编程实践_第4页
多线程编程实践_第5页
资源描述:

《多线程编程实践》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、多线程编程实践闻炳海WindowsAPI线程函数MFC线程函数提纲多线程起源并发执行:多个进程或线程先后开始执行,都还没有停止。目的:多任务同时执行好处:提高运行速度提高硬件利用率改善用户体验技术:进程线程超线程在CPU多核化,多线程编程更加重要多线程起源进程:程序在一个数据集合上的一次执行过程。线程:是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自己不拥有系统资源,它与同属一个进程的其它线程共享进程所拥有的全部资源。两个进程互相独立,连个线程共享数据空间。CPU调度进程开销很大,而调度线程开销小的多。线程间的通讯手段也更多更简便。创建线程WindowsAPI:CreateThre

2、ad()hThread=CreateThread(&security_attributes,dwStackSize,ThreadProc,pParam,dwFlags,&idThread);参数说明:lpThreadAttributes:指向安全属性结构,设为NULL,用缺省值。dwStackSize,线程堆栈大小,一般取0,缺省设置。lpStartAddress,指向线程函数的指针,必须以下列形式声明:DWORDWINAPIThreadProc(PVOIDpParam)lpParameter:向线程函数传递的参数。dwCreationFlags:线程标志,创建挂起线程或立即激活。lpThre

3、adId:保存新线程的id。hThread:函数成功,返回线程句柄;函数失败返回false。简单的线程例子#includeintmain(){srand((unsigned)time(0));for(inti=0;i<2;++i){if(NULL==CreateThread(0,0,MyThread,(void*)i,0,0)){return-1;;}}while(!kbhit()){cout<

4、hread(LPVOIDParam){intId=int(Param);cout<<"Iamthethread:"<

5、Y_NORMAL,THREAD_PRIORITY_ABOVE_NORMAL,THREAD_PRIORITY_HIGHEST,挂起线程:系统将不再分配CPU去执行线程。DWORDResumeThread(HANDLEhThread);恢复线程:重新投入执行DWORDSuspendThread(HANDLEhThread);终止线程:(三种方式)VOIDExitThread(UINTfuExitCode); BOOLTerminateThread(HANDLEhThread,DWORDExitCode);WindowsAPIsWindowsAPI线程函数MFC线程函数提纲MFC中的线程MFC创建线

6、程:CWinThread*AfxBeginThread(ThreadProc,LPVOIDpParam);线程函数:UINTMyThreadFunction(LPVOIDpParam);MFC结束线程:voidAFXAPIAfxEndThread(UINTExitCode,BOOLbDelete=TRUE);临界区:CCriticalSection保证一次只能有一个线程访问一个数据对象,只能用于线程间同步互斥量:CMutex多个应用(多个进程)同时存取相应资源,可以在进程间使用信号量:CSemaphore同时可以有多个线程使用一组相应资源,资源计数事件:CEvent必须等待某些事件发生后才能存

7、取相应资源头文件:#icludeMFC线程同步单锁:CSingleLock:锁定一个资源多锁:CMultiLock:同时锁定多个资源CMutexmutex;CSingleLocksingleLock(&mutex);CEventEvent,Event2;CSyncObject*Es[2];Es[0]=&Event1;Es[1]=&Event2;CMultiLockWaitMult

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

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

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