关于多线程共享套接字有关问题

关于多线程共享套接字问题
下面是伪代码,程序上的代码太多就懒得贴出来了

主线程函数
{
在本线程中创建的套接字,a=WSASocket,
然后连接connect成功
send(a,...)//发送数据成功

创建并运行副线程函数,把套接字a传给它作为参数
}

副线程函数
{
send(a,...)//发送数据失败
}

一直郁闷了一天,跟着调试了大半天,终于发现了这个问题,新建的副线程尝试使用主线程的套接字发送数据时失败·······
百度了一下,有些人说套接字在多线程是共享的····也有人说不是共享的···但问题是现在副线程无法访问那个套接字···希望高手们赐教赐教···小弟在此谢过了

还想请问下套接字有木有办法共享与多线程间,让多个线程都可以访问到呢?









------解决方案--------------------
这种做法本身就是错误。不能有一个以上的线程同时调用一个套接字的send或者recv
------解决方案--------------------
如果在多线程中同时操作一个套接字,那么必须有严格的同步措施(如WaitForSingleObject)
必须排着队打饭,前面的没有做完,后面的必须等着,否则就乱套了

在套接字上的收发,通常也应该是互动的,虽然说是双工,但实际应用主要还是线性的
如果在收或发时有极端耗时的事务,可以另开线程,但是要与主线程保持事件联络,随时异常中止
任何情况下,不可以在不同的线程中不加控制地 同时收 或 同时发:)