Ejemplo n.º 1
0
void STNetEngine::NotifyOnClose(STNetConnect *pConnect)
{
	if ( 0 == AtomAdd(&pConnect->m_nDoCloseWorkCount, 1) )//只有1个线程执行OnClose,且仅执行1次
	{
		SetServerClose(pConnect);//连接的服务断开
		m_pNetServer->OnCloseConnect( pConnect->m_host );
	}
}
Ejemplo n.º 2
0
void* NetEngine::CloseWorker( NetConnect *pConnect )
{
	SetServerClose(pConnect);//连接的服务断开
	m_pNetServer->OnCloseConnect( pConnect->m_host );
	/*
		以下pConnect->GetSocket()->Close();操作
		是V1.51版中,从CloseConnect( ConnectList::iterator it )中移动过来
		推迟执行close

		确保业务层完成close业务后,系统才可以再利用socket句柄
		详细原因,参考CloseConnect( ConnectList::iterator it )中注释
	*/
	pConnect->GetSocket()->Close();
	pConnect->Release();//使用完毕释放共享对象
	return 0;
}