也许我误解了什么,但是......
当我调用 pthread_mutex_lock(),然后在同一线程中再次调用 pthread_mutex_lock() 而不调用 pthread_mutex_unlock() 时,第二次调用 pthread_mutex_lock() 将阻塞。
但是:当我调用 EnterCriticalSection() 并在同一线程中再次调用 EnterCriticalSection() 而不调用 LeaveCriticalSection() 时,EnterCriticalSection() 的第二次调用将不会阻塞,因为它被调用了同一线程(对我来说这是一个非常奇怪的行为)。
所以我的问题是,是否有一个可用的 WinAPI 函数,其行为类似于 pthread_mutex_lock() 并且锁独立于线程上下文?
我知道适用于 Windows 的 libpthread,但我更喜欢这里有一个 WinAPI 函数。
最佳答案
您可以使用最大计数设置为 1 的信号量。 请参阅Semaphore Objects
当您成功获取信号量时,其计数会减少:在我们的例子中减至零。 其他线程都无法获取它,包括当前线程。
关于winapi - pthread_mutex_lock() 和 EnterCriticalSection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17442254/