当前位置:  技术问答>linux和unix

epoll_wait时产生的"Interrupted system call"

    来源: 互联网  发布时间:2017-01-12

    本文导语:  问题描述如下: 一个Linux进程中有三个线程,分别为A,B,C。 A线程中有epoll的使用,来监听来自其他进程的socket连接。 B线程负责处理来自A线程的连接处理。 C线程是一个定时器Timer线程,这个线程利用signal进行计...

问题描述如下:

一个Linux进程中有三个线程,分别为A,B,C。

A线程中有epoll的使用,来监听来自其他进程的socket连接。

B线程负责处理来自A线程的连接处理。

C线程是一个定时器Timer线程,这个线程利用signal进行计数,signal使用的具体代码是:



 signal(SIGALRM,timer_handle);



当运行进程后,先执行B,C线程,然后再执行A线程。A线程运行中,在运行到epoll_wait函数调用时产生了“Interrupted system call”错误。

测试发现:

1. 如果禁掉C线程(定时器Timer线程),一切就会运行正常。

2. 如果A线程不用epoll机制,选用select机制,也会产生“Interrupted system call"错误。

请问,在保证三个线程都使用的情况下,如何解决这个问题。谢谢。

我的思路:是否在timer线程中不使用signal机制,或者在A线程中(使用epoll或者select)做些处理避免这个错误。

|


这个我真不清楚,没读过源码。。 我去围观一下得了。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.169IT.COM)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于epoll_wait()函数
  • windows客户端强制结束进程, epoll_wait收不到事件通知(不能完全收到)
  • epoll_wait返回一个fd,但对该fd进行recv的时候,却频繁报错
  • 请教关于多线程epoll_wait的问题?
  • 求助!!!多线程+多个epoll_wait问题
  • 实用了epoll_wait还需要将socket设置为非阻塞吗?
  • 请问epoll_wait返回的poll_events中的变量为什么为0


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号