类的公用数据与全局线程的有关问题请问.
类的公用数据与全局线程的问题请教......
类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
估计同步问题没处理好,队列出界了
类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
估计同步问题没处理好,队列出界了