list的empty()不为空 size()出现负数解决思路

list的empty()不为空 size()出现负数while(!m_pInstance-m_listRecvData.empty()){TRACE(链表的长度:%d\

list的empty()不为空 size()出现负数
while(!m_pInstance->m_listRecvData.empty())
{
TRACE("链表的长度:%d\n",m_pInstance->m_listRecvData.size());

nCount = 0;

string strData = m_pInstance->m_listRecvData.front();

EnterCriticalSection(&m_pInstance->m_csRecv);

m_pInstance->m_listRecvData.pop_front();

LeaveCriticalSection(&m_pInstance->m_csRecv);
}

就这段代码,就只push了一次,后面出现超出长度的现象,请问是什么问题
[解决办法]
多线程不安全的代码