我正在编写一个模拟套接字行为的跨平台库,在两者之间具有附加功能(应用程序->mylib->套接字)。我希望它对程序员来说尽可能透明,因此select和poll等原语必须相应地与这个lib一起工作。问题是当数据在真实套接字中变得可用(例如)时,它必须经过很多处理,所以如果select指向真实套接字fd,应用程序将被阻塞很多时间。我希望选择/轮询仅在准备好使用数据时(在我的库完成所有处理之后)解除阻塞。所以我遇到了这个eventfd,它允许我做我想做的事,即在给定的fd上操纵选择/轮询行为。由于我对Linux环境比较熟悉,所以我不知道eventfd在windows中的作用是什么。尝试搜索但
eventfd是特定于Linux的。我需要将一个使用此事件通知系统的Linux编写的库移植到OSX。有办法实现吗? 最佳答案 两个选项是pipe和kqueue的EVFILT_USER。这取决于eventfd的使用方式。 关于linux-eventfd的OSX替代品,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/26603615/
eventfd是特定于Linux的。我需要将一个使用此事件通知系统的Linux编写的库移植到OSX。有办法实现吗? 最佳答案 两个选项是pipe和kqueue的EVFILT_USER。这取决于eventfd的使用方式。 关于linux-eventfd的OSX替代品,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/26603615/
我已经使用eventfd()在用户空间程序中创建了一个eventfd实例。有没有一种方法可以将一些引用(指向其结构或pid+fd对的指针)传递给这个创建的eventfd实例到内核模块,以便它可以更新计数器值?这是我想做的:我正在开发一个用户空间程序,它需要与我编写的内核空间模块交换数据和信号。为了传输数据,我已经在使用ioctl。但我希望内核模块能够在新数据准备好通过ioctl使用时向用户空间程序发出信号。为此,我的用户空间程序将在不同的线程中创建一些eventfds。这些线程将使用select()在这些eventfds上等待,每当内核模块更新这些eventfds上的计数时,它们将通过
我已经使用eventfd()在用户空间程序中创建了一个eventfd实例。有没有一种方法可以将一些引用(指向其结构或pid+fd对的指针)传递给这个创建的eventfd实例到内核模块,以便它可以更新计数器值?这是我想做的:我正在开发一个用户空间程序,它需要与我编写的内核空间模块交换数据和信号。为了传输数据,我已经在使用ioctl。但我希望内核模块能够在新数据准备好通过ioctl使用时向用户空间程序发出信号。为此,我的用户空间程序将在不同的线程中创建一些eventfds。这些线程将使用select()在这些eventfds上等待,每当内核模块更新这些eventfds上的计数时,它们将通过
在Linux上,在C/C++程序中,如果我不关心我的eventfd是否被用于“select”,那么使用eventfd_read/write(带有EFD_SEMAPHORE标志)还是sem_wait/post更好?是否存在任何性能、可靠性和可移植性问题?由于我的程序使用了一些其他的eventfd对象(带有“select”),我认为使用eventfd比使用sem_wait/post更一致。 最佳答案 sem_wait/sem_post完全是用户空间,除非sem_waitblock或sem_post发布到具有服务员。即使那样,它们执行的系