MyException - 我的异常网
当前位置:我的异常网» C语言 » 两个线程共用同一个套接字,一个读一个写,会不会有

两个线程共用同一个套接字,一个读一个写,会不会有效率有关问题

www.MyException.Cn  网友分享于:2013-01-06  浏览:94次
两个线程共用同一个套接字,一个读一个写,会不会有效率问题?
本帖最后由 leigema 于 2012-12-17 23:29:12 编辑
我用的UDP协议。有两个线程。一个线程不停地读端口,等待客户端信息到达。令一个线程时不时(可能会很频繁)的向所有客户端发送信息。

我知道操作系统自己会对套接字描述符做同步。从这点看是不能同时有两个线程使用同一个套接字的。
可是我又得知,套接字有发送缓冲区和接收缓冲区,即发送和接收是用的不同的缓冲区。从这点看,我又觉得可以同时对一个套接字即写又读了。只要不是多个线程同时写或同时读就好了。

我的这种做法(两个线程一个读一个写同意套接字)会不会造成一个线程在使用套接字的时候,另一个线程只能在一边等待。

PS:是linux平台。应该和windows差不多吧?

求解答!!!!
------解决方案--------------------
应该没有问题的!
------解决方案--------------------
还是得有某种同步。
不然读空或写满就不好了。
------解决方案--------------------
把描述符加入到epoll怎么样
------解决方案--------------------
引用:
引用:还是得有某种同步。
不然读空或写满就不好了。
这个会阻塞

阻塞的也是自己的进程,应该没关系。或者你可以设置成nonblocking
------解决方案--------------------
各使用一个套接字,两个套接字绑定到同一个端口上。
------解决方案--------------------
可以,我手里的程序就是这么实现的。
------解决方案--------------------
setsocketopt 设置 reuse 就行
------解决方案--------------------
可以2个线程一个读,一个写同一个套接字,没有问题,你考虑效率的话可以考虑事件驱动读写操作。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有