- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多线程 郑秋华 zheng_qiuhua@126.com 大纲 多线程简述 线程创建函数和控制函数 互斥和同步机制 临界区 互斥量 事件 信号量 多线程 /morewindows/article/details/7392749 多线程简述 线程是由两个部分组成 线程的内核对象(见:内核对象),操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。 线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量。 如果在单进程环境中,多个线程将共享单个地址空间,这些线程能够执行相同的代码,对相同的数据进行操作。这些线程还能共享内核对象句柄,因为句柄表依赖于每个进程而不是每个线程存在。 线程是抢占式多任务。当系统判定时间已到时, CPU放弃某线程而安排给其他线程。 线程创建函数和控制函数 线程创建有多种方法,如CreateThread,AfxBeginThread,_beginthread和beginthreadex。 CreateThread Windows API函数,提供操作系统级别的创建线程的操作。 Win32的线程使用CreateThread函数来创建,HANDLE?CreateThread(? LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD?dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID?lpParameter,??DWORD?dwCreationFlags,?LPDWORDlpThreadId); 终止线程有下面几种方法: (1)使用TerminateThread函数 (2)使用ExitThread函数 (3)使用return 建议使用Return方法。TerminateThread或ExitThread不能正确的清除线程堆栈。 函数GetThreadTimes通常用来获取线程的运行时间。函数GetCurrentThreadID是获取当前线程的ID。 Sleep指定线程休眠,单位为毫秒。比如,Sleep(1000)将使线程休眠1000毫秒。 函数SwithToThread的功能是切换到其他线程。 SuspendThread用来挂起一个线程。 WaitForSingleObject等待一个指定的线程,直到线程完全完成它的工作。 函数WaitForMultipleObject用来等待多个事件。等待的情形:更改通知、控制台输入、事件、工作、互斥、进程、信号量、线程和可等待定时器。 AfxBeginThread MFC中线程创建的函数。 首先创建相应的CWinThread对象; 然后调用CWinThread::CreateThread,,完成了对线程对象的初始化工作; 然后,调用_beginthreadex (AfxBeginThread相比较更为安全)创建线程. 优点:简化了操作或让线程能够响应消息,即可用于界面线程,也可以用于工作者线程。 线程函数定义为:UINT _yourThreadFun(LPVOID pParam); _beginthreadex _begingthread 这两个函数是MS对C Runtime库的扩展SDK函数。 首先针对C Runtime库做了一些初始化的工作,以保证C Runtime库工作正常.然后,调用CreateThread真正创建线程.仅使用Runtime Library时,可以用_begingthread。 _beginthread uintptr_t _beginthread( void( *start_address )( void * ), unsigned stack_size, void *arglist ); _beginthreadex uintptr_t _beginthreadex( void *security, unsigned stack_size, unsigned ( *start_address )( void * ), void *arglist, unsigned initflag, unsigned *thrdaddr ); Parameters start_address Start address of a routine that begins execution of a new thread. For _beginthread, the calling convention is either __cdecl or __clrcall; for _beginthreadex, it is either __stdcall or __clrcall. stack_size Stac
您可能关注的文档
- 外文翻译-雕刻机控制器的设计与实现.doc
- 外文翻译-基于固高数控系统的雕刻加工程序设计.doc
- 外文资料翻译-基于并口控制的数控机械运动研究.doc
- 外文资料翻译-开放式全软件数控试验系统研究设计.doc
- 外研版初中英语单词(全册)无答案.doc
- 网络编程5-多线程服务器 1.ppt
- 网络编程7-多路复用.ppt
- 网络仿真和模拟课程设计手册.doc
- 网络仿真和模拟实验报告.doc
- 网络工程设计与应用(第1章)课件(7-302-26755-3).ppt
- 网络工程设计与应用(第2章)课件(7-302-26755-3).ppt
- 网络工程设计与应用(第3章)课件(7-302-26755-3).ppt
- 网络工程设计与应用(第4章)课件(7-302-26755-3).ppt
- 网络工程设计与应用(第5章)课件(7-302-26755-3).ppt
- 网络工程设计与应用(第6章)课件(7-302-26755-3).ppt
- 网络工程设计与应用(第7章)课件(7-302-26755-3).ppt
最近下载
- 七年级下学期体育与健康教案全集(54课时).doc VIP
- 2025年绿色矿山建设技术挑战与机遇报告.docx
- 住房公积金贷款全权代理委托书范本.docx VIP
- 2024-2025学年人美版(2024)美术小学一年级上册教学设计(附教材目录).docx VIP
- 【北师大版】二年级《劳动实践指导手册》第1课《清洗我的小水杯》课件.pptx VIP
- 高中通用技术作品实验报告.doc VIP
- 急性有机磷农药中毒诊治.ppt VIP
- JB_T 7334-2016 手拉葫芦.pdf VIP
- 燃气管道施工方案.doc VIP
- DB15T 3962.3-2025绿色矿山建设规范 第3部分:黄金行业.pdf VIP
文档评论(0)