Bonjour,
j'aimerais savoir quelle est la différence entre poll et select. Quand je lis les docs les deux attendent qu'un évènement ait lieu sur une socket ...
Quand est ce qu'il faut utiliser l'un plutot que l'autre ?
Merci d'avance.
Bonjour,
j'aimerais savoir quelle est la différence entre poll et select. Quand je lis les docs les deux attendent qu'un évènement ait lieu sur une socket ...
Quand est ce qu'il faut utiliser l'un plutot que l'autre ?
Merci d'avance.
le select est plus facile a utiliser mais le poll est plus complet il me semble.
1) Donc si j'ai bien compris tout ce que fait select, poll il peut le faire. Mais qu'est ce que
poll peut faire et que select ne peut pas ... ?
2) J'ai une autre question : je pense que l'appel à poll n'a un sens que si la socket est bloquante. Est ce vrai ? En effet, dans le code ci-dessous, j'ai pas vraiment compris pourquoi on définit une socket non bloquante puis on fait un poll ( sockwait fait appel à poll) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 socknonblocking(sock, 1); if (connect(sock, (sockaddr *)dst, sizeof(dst))) { case EWOULDBLOCK: lk.unlock(); if (!sockwait(sock, WaitTimeout, POLLOUT)) { log(DEBUG, "Success polling for connect"); ... } ...
Non pas vraimet..ça ne sert pas à la même chose...
ne rien toucher à l'état du socket...
Non, c'est le contraire...
Si le socket est en mode bloquant, select, qui est bloquant, est intéressant.
Si le socket est en mode non-bloquant, untilser select bloque le reste de l'application tant qu'il n'y a pas de réponse.. Utiliser poll pour aller voir régulièrement si quelque chose est à lire permet de continuer l'application sans tout bloquer (par exemple figer une IHM)..
Partager