gpt4 book ai didi

c - 让 select 和 xcb_poll_for_event 一起工作的安全方法?

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

我认为这个问题并不新鲜:我有一个线程应该从一个 X 服务器(通过 XCB)和另一个与 TCP 连接的服务器读取,所以需要调用 select。

令我困惑的是,当程序从select返回时,发现X服务器链接中有数据,如果数据不足以进行XCB事件怎么办?这种情况下xcb_poll_for_event()应该返回NULL,但是当程序再次调用select时并没有阻塞,因为毕竟还有一些数据,所以程序陷入了“忙”等待状态。

这是一个合理的担忧吗?我相信是这样,因为每个 XCB 事件都是由许多字节组成的,服务器在发送过程中可能会中断。

最佳答案

如何使用 setsockopt() 为具有 XCB 事件所需大小的 xcb fd 设置 SO_RCVLOWAT。现在,套接字的文件描述符只会在至少读取该数量的数据时才选择为可读。这是我们在处理 TCP 服务器时使用的正常方法,不过还没有在 XCB fd 上尝试过。

关于c - 让 select 和 xcb_poll_for_event 一起工作的安全方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41540191/

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