Je pense que la question n'est pas nouvelle: j'ai un thread qui devrait lire à partir d'un serveur X (via XCB) et un autre serveur connecté avec TCP, donc l'appel select est nécessaire. Ce qui m'embrouille, c'est quand le programme revient de select, il y a des données dans le lien du serveur X, et si les données ne sont pas suffisantes pour un événement XCB? Dans ce cas, xcb_poll_for_event() devrait retourner NULL, mais quand le programme appelle à nouveau select, il ne bloque pas car il y a des données après tout, donc le programme est bloqué dans l'état d'attente "busy".La façon sûre d'avoir select et xcb_poll_for_event fonctionne-t-elle ensemble?
Est-ce une préoccupation légitime? Je crois parce que chaque événement XCB est composé de nombreux octets et le serveur peut être interrompu lors de l'envoi.
Merci. Je ne connaissais pas cette option auparavant, mais ici je ne peux pas prédire combien d'octets sont nécessaires pour un événement XCB. Selon http://man7.org/linux/man-pages/man7/socket.7.html, semble que cette option ne fonctionne pas comme prévu? "Les appels système select (2) et poll (2) ne respectent pas le paramètre SO_RCVLOWAT sous Linux, et marquent un socket lisible quand même un seul octet de données est disponible.Une lecture ultérieure de la socket se bloquera jusqu'à SO_RCVLOWAT les octets sont disponibles. " – Danath