当前位置:StudyEZ>学易考试社区>IT>编程语言>CSocket 的OnClose中CMutex 锁不住

CSocket 的OnClose中CMutex 锁不住

上一主题 下一主题
1页, 共1页 (共1楼)

CSocket 的OnClose中CMutex 锁不住

2007-03-05 2:37 下午

void CClientSocket::OnClose(intnErrorCode)
{
if(m_parentdlg!=NULL)
m_parentdlg->ProcessClose(this);
CSocket::OnClose(nErrorCode);
}

然后在m_parentdlg(CMsgTraDlg)的ProcessClose 中锁住列表,删除该socket 但失败

void CMsgTraDlg::ProcessClose(CClientSocket *pSocket)
{

m_mutex.Lock();//锁不住 m_mutex全局的变量
...........
查询列表,删除pSocket

m_mutex.Unlock();

}
如果两个SOCKET  连接到服务端后,先后掉线,当第一个执行ProcessClose  还没有运行到m_mutex.Unlock(); 时,第二个,也可以进入查询列表,删除pSocket ,他没有在m_mutex.Lock();锁住

 

1页, 共1页 (共1帖)