windows线程同步对象mutex

2023-01-11  本文已影响0人  CodingCode
  1. 什么是mutex
    首先mutex是一个内核对象,不但可以用来做线程同步,还可以用来做进程间同步。

  2. 基本API
    2.1 创建mutext
    HANDLE aMutex = CreateMutex(NULL, FALSE, "abcd");

2.2 等待一个mutex
DWORD ret = WaitForSingleObject(aMutex, INFINITE);

这个地方需要注意的是:

  1. 只有对方ReleaseMutex了,那么Wait才能返回。
  2. 如果对方没有ReleaseMutex,而直接调用CloseHandle,那么Wait也是不会返回的。
  3. 如果对方直接进程退出了,那么Wait是可以返回的,但是返回值是:WAIT_ABANDONED (https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-waitforsingleobject)

2.3 释放mutex
ReleaseMutex(child_mutex);
ReleaseMutex是和WaitXXX匹配使用的。

2.4 关闭mutex
CloseHandle(child_mutex);

上一篇下一篇

猜你喜欢

热点阅读