微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SIGIO与epoll适用于Linux套接字

如何解决SIGIO与epoll适用于Linux套接字

Linux(man 7 socket)的套接字文档说,您可以将套接字设置为O_ASYNC,然后在套接字准备好进行读/写操作时接收信号。

但是,似乎大多数人都改为使用epoll。使用epoll而非此异步信令系统的原因是什么?

解决方法

如果您有一个中央循环,可以捕获所有类型的事件,那么编写单个线程的应用程序就非常容易,并且不必担心在执行不同执行时可能发生的所有同步问题上下文。

如果使用信号处理程序,则必须注意不要从信号处理程序上下文调用非可重入函数。您可以拨打Async-signal-safe functions 的清单。如您所见,这是一个简短的清单!结果,您的信号处理程序无法做很多事情,可能只是设置一个标志或发送一条消息,而实际工作必须在“某处”完成。实际上,信号处理程序非常有限。

而且,在多线程应用程序中使用信号处理程序也并不像乍看起来那样容易,因为处理程序是针对每个任务而不是针对每个线程的。了解更多:signal handler function in multithreaded environment

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。