类的公用数据与全局线程的有关问题请问.

类的公用数据与全局线程的问题请教......
本帖最后由 kxywn 于 2013-04-30 11:47:08 编辑
类A.h
{
   CRITICAL_SECTION m_lock;
   queue<string> m_qMessage;
}

类A.Cpp


DWORD WINAPI WriteFileThread(LPVOID lp)   //A 类全局线程函数  ,从A类对象创建该函数就一直运行
{
    CLog *p=(CLog *)lp;
          ......
while (p->m_bIsWorking)

          ......
          EnterCriticalSection(&p->m_lock);
          if (!p->m_qMessage.empty())
              {
                   p->m_qMessage.pop();
              }
          LeaveCriticalSection(&p->m_lock);
   ......
....
}

A:add(string ss)      从A类对象生成,此函数一直在被调用
{
  EnterCriticalSection(&m_lock);
  m_qMessage.push("\r\nINFO "+GetCurTime()+ss);
  LeaveCriticalSection(&m_lock);
}

编译:OK
运行出现错误:Expression:deque iterator not dereferencable

注明:除了这两个地方用了m_qMessage,其他地方都没用,不过A类对象有好几个的。
请大侠指教...

------解决方案--------------------
运行出现错误:Expression:deque iterator not dereferencable

估计同步问题没处理好,队列出界了