- 6
- 0
- 约1.29万字
- 约 54页
- 2015-12-14 发布于湖北
- 举报
计算机网络程序设计多线程技术.ppt
在程序中,用户创建了一个初始状态为有信号自动重置并且具有默认安全属性的匿名事件对象。 当用户创建事件对象时,如果将其初始状态设置为无信号,则需要用户手动将其设置为有信号状态。实现该功能可以调用函数SetEvent()将指定的事件对象设置为有信号状态。该函数原型如下: BOOL SetEvent(HANDLE hEvent); 该函数调用成功,则返回true。否则,将返回false。参数hEvent表示将设置的事件对象句柄。与该函数功能相反,函数ResetEvent()则将指定的事件对象设置为无信号状态,其参数及意义与函数SetEvent()相同。 当然,线程也可以通过调用函数WaitForSingleObject()主动请求事件对象。该函数原型如下: DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds ); 该函数将在用户指定的事件对象上等待。如果事件对象处于有信号状态,函数将返回。否则,函数将一直等待,直到用户所指定的时间到达。各参数及其意义如下: 参数hHandle表示函数所等待的事件对象句柄。 参数dwMilliseconds表示该函数将在事件对象上的等待时间,如果该参数为INFINITE,则该函数将永远等待。该函数的返回值可以表明引起函数返回的原因,其部分返回值如表3.2所示。 表3.2 函数部分返回值 例如,用户使用事件对象实现线程同步编程。代码如下: 在代码中,用户主要使用了函数WaitForSingleObject()对事件对象进行请求,然后再使用事件对象相关API函数设置其有无信号状态。实例程序根据事件对象的信号状态判断线程的执行顺序以及输出全局变量a的值,如图3.7所示。 返 回 值 返回值意义 WAIT_TIMEOUT 用户指定的等待时间已过 WAIT_OBJECT_0 线程所请求的对象为有信号状态 图3.7 事件对象实现线程同步 在本小节中,向用户介绍了事件对象编程的相关API函数的原型以及参数意义,并配合实例程序讲解了这些API函数的使用方法。 2.使用CEvent类实现线程同步 CEvent类是MFC中支持事件对象编程的类。本小节将向用户讲解该类实现线程同步技术的部分常用函数以及使用方法。 首先,用调用该类构造函数创建对象。构造函数原型如下: CEvent( BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE, LPCTSTR lpszName = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL ); 在构造函数中,参数及其意义如下: 参数bInitiallyOwn表示事件对象的初始化状态。如果该参数为true,则表示该事件对象为有信号状态。否则,该事件对象为无信号状态。默认为无信号状态。 参数bManualReset表示该事件对象是人工重置还是自动重置对象。如果该参数为true,则事件对象为人工重置。否则,事件对象为自动重置。 参数lpszName表示用户为该事件对象的命名。默认情况下为NULL。 参数lpsaAttribute表示该事件对象的安全属性。一般情况下,创建的事件对象均指定为默认安全属性。 例如,用户使用CEvent类创建对象。代码如下: ... //省略部分代码 CEvent event(true,false,NULL,NULL); //创建事件类对象 将事件对象设置为有信号或无信号状态可以分别调用函数SetEvent()和ResetEvent()。函数原型如下: BOOL SetEvent( ); //设置事件对象为有信号 BOOL ResetEvent( ); //设置事件对象为无信号 以上两个函数若调用成功,则返回true。否则,将返回false。 例如,用户使用CEvent类在程序中实现线程同步。代码如下: 在上面的程序中,用户主要使用了CEvent类的相关函数实现线程的同步。本小节主要向用户讲解如何使用API函数或者CEvent类创建事件对象,实现线程同步技术的相关方法。 3.2.3 互斥对象 互斥对象与前面所学的临界区对象和事件对象的作用一样,均用于实现线程同步。但是,互斥对象还可以在进程之间使用。在互斥对象中,包含一个线程ID和一个计数器。线程ID表示拥有该互斥对象的线程,计数器用于表示该互斥对象被同一线程所拥有的次数。在程序中,同样可以使用API函数或者MFC类操作互斥对象,实现线程同步。 1.使用API函数操作互斥对象 用户可以调用API函数CreateMutex()创建并返回
您可能关注的文档
最近下载
- Ф90橡胶冷喂料挤出机毕业设计说明书.docx VIP
- 《行测》《行测》题库型介绍(基础题).docx VIP
- 北师大五年级下册全册数学教案.docx VIP
- 石蜡制备高碳醇工艺条件研究.pdf VIP
- 2025届宁夏回族自治区吴忠市盐池县高三下学期第一次模拟考试物理试卷.pdf VIP
- 浙江省中小学正高级教师职称评审表2017.pdf VIP
- 80辛集互联网搜索引擎在成功抓获漂白身份潜逃十二年绑架逃犯中的具体应用3542.pdf VIP
- 《故宫IP联名文创产品开发与销售总结》_国潮文创产品经理.docx
- 人教版(2019)必修第一册 Unit 3 Sports and Fitness Reading and thinking Living Legends 教学设计.pdf VIP
- 专题01+完形填空之综合解题技巧(复习课件)(全国通用)2026年高考英语二轮复习讲练测.pptx VIP
原创力文档

文档评论(0)