【发布时间】:2011-06-30 02:53:04
【问题描述】:
我发现在 linux 下 wxCriticalSection 不是递归的(当一个线程多次抓取一个部分时会死锁)。查看源代码,我发现在 Linux 下使用 wxMutex 实现了 wxCriticalSection,但没有使用 wxMUTEX_RECURSIVE。我有一个在 Win 和 Mac 下运行良好的代码库,我想将它移植到 Linux,但我在某些地方遇到了死锁,我没有避免递归。
现在我有两种可能:
为我的目的更改和重建 wxWidgets(brrr - 我很想知道这一点,因为我不太了解其背后的设计决策)
调试我所有可能的代码路径(brrr - 需要几天时间,而且很容易出错)
是否有第三种方法,用在 Mac/Win/Unix 下表现相同的构造替换/扩展 wxCriticalSection?
ps。有人可以向我解释设计决定吗? Vadim Z 先生说……
我暂时忘记了我反对这个的原因(使 wxCriticalSections 递归),但 30 秒后我确实记得它(当然是在发送我的消息之后)。请看我的后续
但一直没有后续...
【问题讨论】: