gpt4 book ai didi

c++ - 对 CreateMutex 的困惑

转载 作者:可可西里 更新时间:2023-11-01 13:50:38 25 4
gpt4 key购买 nike

假设我调用 CreateMutex。

HANDLE h;
h=CreateMutex(NULL, TRUE, NULL);
waitforsingleobject(h, INFINITE);
////Random Code
ReleaseMutex(h);

假设我有多个线程在运行,第一个到达函数 createmutex 的线程实质上会阻塞//random 代码部分的所有其他线程,直到调用 release mutex 对吗?

最佳答案

它不会,因为您创建了一个未命名的互斥量(第三个参数是名称)。假设示例代码在多个线程中运行,每个线程都会创建一个新的未命名互斥量,并会立即访问临界区(随机代码),因为它们只是在等待自己的互斥量。

要解决这个问题,可以让 h 成为所有线程都可以访问的全局句柄,并在共享代码之外调用 CreateMutex 一次,或者为 CreateMutex 提供一个名称(第三个参数)。在后一种情况下,对 CreateMutex 的后续调用将返回现有互斥体的句柄。

关于c++ - 对 CreateMutex 的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com