gpt4 book ai didi

c++ - 取消屏蔽 `poll` ?

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:29 24 4
gpt4 key购买 nike

所以,我遇到了这个问题,我有很多线程在不同的文件描述符上调用轮询。当我想添加一个新的时,我需要取消其中一个民意调查,添加一个新的,然后继续。这听起来很糟糕,但我什至不知道该怎么做。

一些相关代码:

struct pollfd fds[size];
for(int i = 0;i<size;i++) {
struct pollfd fd;
fd.fd = body[i];
fd.events = POLLIN;
fd.revents = 0;
fds[i] = fd;
}
if(poll(&fds[0], (nfds_t)size, -1) < 0) return NULL;

(我也通过 JNI 使用它)。

我想我可以为轮询设置一个非常低的延迟,并一遍又一遍地调用它,但我认为这会开始破坏目的。

最佳答案

你可以这样做的方法是:打开一个套接字或管道,当有一个新的文件描述符要添加到轮询集中时,另一个线程发送一些数据。这样,poll 就会返回,你检查这个保留的文件描述符。如果有数据,则表示有新的文件描述符要添加。

关于c++ - 取消屏蔽 `poll` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31909718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com