是不是CSocket对象把其指针作为参数传给线程函数不安全?
在多线程里用CSocket(在主线程create,connect,close,在另一个Thread里Receive和Send)
是不是一定得传Socket句柄?(MFC的帮助我看了,不是很清楚)
如果传Socket句柄,在(主线程create,connect,close,在另一个Thread里Receive和Send)的模式下
应该怎么传?
那个Socket句柄该定义在那里?(我自己新建了1个Classs CMyCSocket: public CSocket)
我在使用CSocket::Attach/Detach时,在主Thread里通过Detach得到句柄(没问题),但是在另1个进程用Attach的时候Debug出错(编译通过):
Debug Assertion Failed!
..............map_p.cpp
void* CMapPtrToPtr::GetValueAt(void* key) const
{
ENSURE(this); /// 提示这里出错
....
}
http://support.microsoft.com/kb/175668/en-us
http://support.microsoft.com/kb/140527/en-us这是源于CSocket不是线程安全的,因为TLS存储的MAP的关系。