- quel est l'avantage de epoll sur select ?
L'avantage se situe sur l'algorithme de parcours et le nombre de connections simultanées que tu peux gérer. En effet, actuellement, tu es obligé après le select de parcourir tous les descripteurs pour savoir s'il y a quelque chose a lire. Avec epoll tu ne parcours que les descripteurs ou il y a quelque chose a lire. Dans un contexte avec de multiples connections, c'est indéniablement plus rapide.
j'ajoute le flag MSG_DONTWAIT
Tu peux utiliser fcntl(fd, F_SETFL, O_NONBLOCK) pour faire en sorte que la socket ne soit pas bloquante.
Socket: tu veux dire avec des fork et/ou threads ?
Non, celà signifie d'utiliser une boucle et d'employer des callbacks quand ce que tu as demandé a lire est disponible.
C'est le même principe pour les fichiers. on peut utiliser epoll aussi bien pour des sockets que pour des fichiers. Tu utilises O_NONBLOCK aussi sur tes fichiers et quand tu fait un read(fd,buf,count) tu dois gérer EAGAIN comme un cas particulier a la lecture asynchrone.
[^] # Re: Suggestions
Posté par ecyrbe . En réponse au journal Gophrier 0.1. Évalué à 1.
L'avantage se situe sur l'algorithme de parcours et le nombre de connections simultanées que tu peux gérer. En effet, actuellement, tu es obligé après le select de parcourir tous les descripteurs pour savoir s'il y a quelque chose a lire. Avec epoll tu ne parcours que les descripteurs ou il y a quelque chose a lire. Dans un contexte avec de multiples connections, c'est indéniablement plus rapide.
j'ajoute le flag MSG_DONTWAIT
Tu peux utiliser fcntl(fd, F_SETFL, O_NONBLOCK) pour faire en sorte que la socket ne soit pas bloquante.
Socket: tu veux dire avec des fork et/ou threads ?
Non, celà signifie d'utiliser une boucle et d'employer des callbacks quand ce que tu as demandé a lire est disponible.
C'est le même principe pour les fichiers. on peut utiliser epoll aussi bien pour des sockets que pour des fichiers. Tu utilises O_NONBLOCK aussi sur tes fichiers et quand tu fait un read(fd,buf,count) tu dois gérer EAGAIN comme un cas particulier a la lecture asynchrone.