gpt4 book ai didi

c - 你如何以可重入的方式 InitializeCriticalSection?

转载 作者:可可西里 更新时间:2023-11-01 09:48:15 27 4
gpt4 key购买 nike

我正在修改一个完全可重入的库以添加 Windows 支持。问题是初始化函数。初始化函数包含在 MUTEX_LOCK(&ssl_lock);MUTEX_UNLOCK(&ssl_lock); 中,以确保所有内容仅初始化一次。

问题是我无法在 InitializeCriticalSection 之前调用 EnterCriticalSection 并且 InitializeCriticalSection 不可重入。我该如何解决这个问题?

最佳答案

根据您需要支持的 Windows 版本,您可以使用“Init Once”API:

如果您需要支持 WinXP/Win Server 2003 或更早版本,您可能需要依赖内核可以确保只创建一次的 Mutex 对象。在打开/创建互斥锁时,您需要实现一些逻辑,以确保所有执行线程都以有效句柄结束(即尝试打开的循环,然后尝试创建直到打开或创建成功)。

关于c - 你如何以可重入的方式 InitializeCriticalSection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12169127/

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