您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

我想同时等待文件描述符和互斥体,推荐的方法是什么?

我想同时等待文件描述符和互斥体,推荐的方法是什么?

每当使用事件驱动的体系结构时,都需要使用一种机制来报告事件完成。在Linux上,如果一个人正在使用文件,则需要使用select或poll系列中的某个东西,这意味着一个人只能使用管道来启动所有与文件无关的事件。

:Linux有eventfdtimerfd。可以将它们添加到您的epoll列表中,并epoll_wait分别从另一个线程触发或在计时器事件上触发。

还有另一种选择,那就是信号。可以使用fcntl修改文件描述符,以便在文件描述符变为活动状态时发出信号。信号处理程序然后可以将文件就绪消息推送到您选择的任何类型的队列上。这可能是一个简单的信号量或互斥/ condvar驱动的队列。由于现在不再使用select/ poll,因此不再需要使用管道将基于文件的消息排队。

健康警告:我没有尝试过,尽管我看不出为什么它不起作用,但我真的不知道该signal方法性能含义。

编辑:在信号处理程序中操作互斥锁可能是一个非常糟糕的主意。

其他 2022/1/1 18:14:42 有555人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶