繁体   English   中英

因此,setsockopt可以在AF_UNIX(AF_LOCAL)套接字上超时...未记录/不起作用...选项/替代方法?

[英]So setsockopt for timeouts on AF_UNIX (AF_LOCAL) sockets… undocumented/don't work… options/alternatives?

如果有的话,我正在运行Fedora 13。

我在unix(7),setsockopt和send / recv上查找了手册页。

阅读手册页似乎或多或少地告诉我,并非所有选项都可以保证能做任何事情……而且显然,实际上只有少数文件起作用/不起作用。

特别是...我想看看是否有可能超时。 至少在我的系统上,SO_RCVTIMEO实际上为recv调用系列设置了一个定时输出...但是SO_SNDTIMEO却将套接字设置为无超时的无阻塞模式。

所以我的问题是...我该怎么办才能解决setockopt不是在AF_UNIX套接字上使用超时的可靠方法的事实?

嗯,带有超时的select(2)poll(2)epoll(4)怎么样?

我该如何解决setockopt不是在AF_UNIX套接字上使用超时的可靠方法的事实?

好吧,不要使用它们。

我在G-WAN(Web应用服务器)中使用了epoll(4),不得不面对同样的问题。

基本上有三种处理超时的方法:

  1. 计时器(如果您不喜欢傻瓜般地中断代码)
  2. 轮询(带有循环以检查fds的专用线程需要时间)
  3. 超时(例如带有超时值的epoll_wait(),降低所有速度)

有些使用管道唤醒您要操作的fds。 我的测试表明,这是对资源的极大浪费。 无论您做什么,这都是效率低下或棘手的。 有时候,两者都有(由于愚蠢的内核开发人员)。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM