当前位置: 技术问答>linux和unix
如何在主进程共享子线程中accept得到的socket号?
来源: 互联网 发布时间:2015-05-26
本文导语: 用全局变量带回socket号但不能使用,子线程中该资源是私有的。请大家帮忙 谢谢 | 我感觉是能公用的。 | 1、g_Sock = newSock应该设置mutex或condition variable,否则有可能产生冲...
用全局变量带回socket号但不能使用,子线程中该资源是私有的。请大家帮忙 谢谢
|
我感觉是能公用的。
|
1、g_Sock = newSock应该设置mutex或condition variable,否则有可能产生冲突。
2、POSIX标准是O_NONBLOCK,不要用O_NDELAY了。
3、g_Sock应该是有效的。accept只是说明对端用connect连接了,即完成了三次握手,对端不一定发送了数据。你用了非阻塞socket,当然可能收不到数据就返回。查看此时的errno。
2、POSIX标准是O_NONBLOCK,不要用O_NDELAY了。
3、g_Sock应该是有效的。accept只是说明对端用connect连接了,即完成了三次握手,对端不一定发送了数据。你用了非阻塞socket,当然可能收不到数据就返回。查看此时的errno。
|
可以用哦是线程的嘛
|
>>g_Sock = newSock;(用它带回让主进程使用)
如果你用的是多进程而不是用多线程,那么这个g_Sock是无法带回父进程的,很明显父子进程各有一个g_Sock变量,不是同一个。
一般做法是父进程accept(),得到newSock后fork()子进程对这个socket处理。
或者用线程。
如果你用的是多进程而不是用多线程,那么这个g_Sock是无法带回父进程的,很明显父子进程各有一个g_Sock变量,不是同一个。
一般做法是父进程accept(),得到newSock后fork()子进程对这个socket处理。
或者用线程。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。