gpt4 book ai didi

c++ - boost scoped_lock 互斥锁崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:44:38 25 4
gpt4 key购买 nike

我已经保护了一个 std::queue 的访问函数,push、pop、size,在这些函数中使用 boost::mutexes 和 boost::mutex::scoped_lock

有时它会在作用域锁中崩溃

调用栈是这样的:

0  0x0040f005  boost::detail::win32::interlocked_bit_test_and_set  include/boost/thread/win32/thread_primitives.hpp  361
1 0x0040e879 boost::detail::basic_timed_mutex::timed_lock include/boost/thread/win32/basic_timed_mutex.hpp 68
2 0x0040e9d3 boost::detail::basic_timed_mutex::lock include/boost/thread/win32/basic_timed_mutex.hpp 64
3 0x0040b96b boost::unique_lock<boost::mutex>::lock include/boost/thread/locks.hpp 349
4 0x0040b998 unique_lock include/boost/thread/locks.hpp 227
5 0x00403837 MyClass::inboxSize - this is my inboxSize function that uses this code:

MyClass::inboxSize ()
{
boost::mutex::scoped_lock scoped_lock(m_inboxMutex);
return m_inbox.size();
}

and the mutex is declared like this:
boost::mutex m_inboxMutex;

它在这个函数最后粘贴的一行崩溃:

    inline bool interlocked_bit_test_and_set(long* x,long bit)
{
long const value=1<<bit;
long old=*x;

并且 x 具有此值:0xababac17

感谢帮助

最佳答案

x 的值在我看来很可疑。

它看起来有点类似于 0xabababab,它可能是在 Debug模式下分配给分配的内存的初始值,或者可能是保护值的一部分,以指示分配的内存块是否超出末尾或开头写入

您能否追溯该值的来源?

关于c++ - boost scoped_lock 互斥锁崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2881990/

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