- 0
- 0
- 约 29页
- 2017-07-12 发布于广东
- 举报
为了使用事件对象,系统提供了一组与事件对象有关的函数,下面逐一介绍。 1.CreateEvent 该函数用于创建一个事件对象。 HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCTSTR lpName ); lpEventAttributes:事件对象的安全属性。 bManualReset:事件对象的类型。为TRUE,表示创建人工重置事件对象;为FALSE,表示创建自动重置事件对象。 bInitialState:事件对象初始的通知状态。为TRUE,表示通知状态;为FALSE,表示未通知状态。 lpName:事件对象的名称。 2.SetEvent 该函数用于将事件设置为通知状态。 BOOL SetEvent( HANDLE hEvent ); hEvent表示事件对象句柄。 3.ResetEvent 该函数用于将事件设置为未通知状态。 BOOL ResetEvent(HANDLE hEvent ); hEvent表示事件对象句柄。 在设计线程同步时,通常需要使用WaitForSingleObject函数来等待内核对象的状态。 DWORD WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds ); hHandle:等待对象的句柄。 dwMilliseconds:等待的时间,单位为毫秒。 信号量对象也属于系统内核对象之一,包含有使用计数。当使用计数为0时,信号量对象处于无信号状态;当使用计数大于0时,信号量对象处于有信号状态。系统同样提供了一组操作信号量的函数,下面分别进行介绍。 1.CreateSemaphore 该函数用于创建一个信号量对象。 HANDLE CreateSemaphore(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCTSTR lpName ); lpSemaphoreAttributes:信号量的安全属性,可以为NULL。 lInitialCount:信号量的初始计数。 lMaximumCount:信号量的最大计数。 lpName:信号量的名称。 5.4.3 使用信号量对象实现线程同步 2.ReleaseSemaphore 该函数用于递增信号量的使用计数。 BOOL ReleaseSemaphore(HANDLE hSemaphore,LONG lReleaseCount,LPLONG lpPreviousCount); hSemaphore:信号量对象句柄。 lReleaseCount:信号量的递增数量。 lpPreviousCount:用于返回之前的信号量的使用计数。 临界区又称为关键代码段,指的是一小段代码,在代码执行前,它需要独占某些资源。在程序中通常将多个线程同时访问某个资源的代码作为临界区。为了使用临界区,系统提供了一组操作临界区对象的函数,下面分别进行介绍。 1.InitializeCriticalSection 该函数用于初始化临界区对象。 void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); lpCriticalSection表示一个临界区对象指针。在使用临界区对象时,首先需要定义一个临界区对象,然后使用该函数进行初始化。 5.4.4 使用临界区对象实现线程同步 2.EnterCriticalSection 该函数用于等待临界区对象的所有权。 void EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection); lpCriticalSection表示一个临界区对象指针。 3.LeaveCriticalSection 该函数用于释放临界区对象的所有权。 void LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection ); lpCriticalSection表示一个临界区对象指针。 4.DeleteCriticalSection 该函数用于释放为临界区对象分配的相关资源,使临界区对象不再可用。 void DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection); 其中,lpCriticalSection表示一个临界区对象指针。 互斥对象属于系统内核对象,它能够使
您可能关注的文档
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch8.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch9.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch10.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch11.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch12.ppt
- 新Visual C# 2008程序设计 电子教案+习题答案+源代码 曹静 第1章.ppt
- 新Visual C# 2008程序设计 电子教案+习题答案+源代码 曹静 第2章.ppt
- 新Visual C# 2008程序设计 电子教案+习题答案+源代码 曹静 第3章.ppt
- 新Visual C# 2008程序设计 电子教案+习题答案+源代码 曹静 第4章 数组.ppt
- 新Visual C# 2008程序设计 电子教案+习题答案+源代码 曹静 第5章 面向对象.ppt
- 新Visual C++应用开发与实践 教学课件 刘乃琦_ VC 第6章 套接字编程.ppt
- 新Visual C++应用开发与实践 教学课件 刘乃琦_ VC 第7章 数据库操作技术.ppt
- 新Visual C++应用开发与实践 教学课件 刘乃琦_ VC 第8章 综合案例 商品销售管理系统.ppt
- 新Visual C++应用开发与实践 教学课件 刘乃琦_ VC 第9章 课程设计 网络五子棋.ppt
- 新Visual C++程序设计基础 第1章 绪论ok.ppt
- 新Visual C++程序设计基础 第2章 基本数据类型及表达式ok.ppt
- 新Visual C++程序设计基础 第3章 结构化程序设计ok.ppt
- 新Visual C++程序设计基础 第4章 数组与指针ok.ppt
- 新Visual C++程序设计基础 第5章 函数与预处理ok.ppt
- 新Visual C++程序设计基础 第6章 构造数据类型ok.ppt
原创力文档

文档评论(0)