當前位置:歷史故事大全網 - 歷史天氣 - Windows32 Thread API几种***享数据互斥机制可以采用,如何应用

Windows32 Thread API几种***享数据互斥机制可以采用,如何应用

Windows32 Thread API***享有数据互斥量总***有四种:事件(Event)、临界区(Critical Mechanism)、互斥量(Mutex)、信号量(Semaphore)。现分别叙述如下:

1、事件(Event):是WIN32提供的最灵活的线程间同步方式。

使用方法:

用CreateEvent创建一个事件对于需要手动设置的事件,在需要该事件或者事件发生时,采用SetEvent及ResetEvent来进行设置。

2、临界区(Critical section):防止多个线程同时执行一个代码段

使用方法:

1) 需要设置临界区时,要先定义临界区对象,采用CRITICAL_SECTION g_cs;

2) 使用前需初始化临界区,采用InitializeCriticalSection(amp;g_cs);函数

3) 需要进入临界区时,采用:EnterCriticalSection(amp;g_cs);函数,从而阻止其他的线程进入。

4) 离开临界区时,采用:LeaveCriticalSection(amp;g_cs);,从而让其他线程可以进入该临界区。

5) 当该临界区时不再有使用价值,需临界区,采用:DeleteCriticalSection(amp;g_cs);

3、互斥量(Mutex):互斥量通常用于协调多个线程或进程的活动,控制对资源的“锁定”和“取消锁定”,从而控制对***共享资源的访问。

使用方法:

1)首先,建立互斥体对象,得到句柄使用HANDLE CreateMutex()函数;

2) 然后,在线程可能产生冲突的区域前调用WaitForSingleObject函数,将句柄传给函数,请求占用互斥对象:dwWaitResult = WaitForSingleObject(hMutex,5000L);

3) ***共享资源访问结束,释放对互斥体对象的占用:ReleaseMutex(hMutex);

4) 最后使用CloseHandle函数删除互斥体对象。

4、信号量(Semaphore):信号对象允许多个有限数量的线程同时访问***共享资源。

使用方法:

1 ) 当需要信号量时要先调用CreateSemaphore函数创建信号量

2) 在需要请求资源时,调用WaitForSingleObject函数或者WaitForMultipleObject函数等待信号量。

3) 资源使用完毕后,调用ReleaseSemaphore函数释放信号量

  • 上一篇:星爺在<家有喜事>裏唱的那首歌是什麽歌?
  • 下一篇:不靠谱和很安稳
  • copyright 2024歷史故事大全網