我正在编写一个模拟套接字行为的跨平台库,在两者之间(App->mylib->sockets)具有附加功能。
我希望它对程序员来说是最透明的,所以像 select 和 poll 这样的原语必须与这个 lib 相应地工作。
问题是当数据在真实套接字中变得可用时(例如),它必须经过大量处理,所以如果 select 指向真实套接字 fd,应用程序将被阻塞很多时间。我希望仅在准备好使用数据时(在我的库完成所有处理之后)解除阻塞选择/轮询。
所以我遇到了这个eventfd,它允许我做我想做的事,即操纵给定 fd 上的选择/轮询行为。
由于我更熟悉 Linux 环境,我不知道windows 相当于 eventfd 是什么。试图搜索但没有运气。
注意: 其他方法是使用与接口连接的另一个套接字,但这似乎开销很大。仅仅因为windows没有(看起来如此)这个功能而对所有数据进行系统调用。
或者我可以实现我自己的选择,重新发明轮子。=/