Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Expert Confirmé Sénior


    Homme Profil pro Denis
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    4 996
    Détails du profil
    Informations personnelles :
    Nom : Homme Denis
    Âge : 21
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2011
    Messages : 4 996
    Points : 14 894
    Points
    14 894

    Par défaut fd_set fonctionnement interne ?

    Bonjour,

    On peut utiliser les FD_SET grâce à 4 macro :
    - FD_CLR : pour enlever un file descriptor
    - FD_ZERO : pour enlever tout les files descriptor
    - FD_SET : pour ajouter un file descriptor
    - FD_ISSET : pour vérifier la présence d'un file descriptor.

    Mais derrière, comment sont censé être stocké les différents files descriptor?
    Théoriquement après un select, on est censé n'avoir dans le fd_set que les files descriptor qui on reçu des données ou qui sont disponible en lecture etc.
    Donc pourquoi tester avec FD_ISSET nos 1 000 files descriptor (voir beaucoup plus dans certains cas) si les files descriptor dont on a besoin sont déjà dans le fd_set, pourquoi ne pas récupérer la liste des files descriptor ?


    Est-ce que fd_set ne serait pas un char[(FILE_DESCRIPTOR_MAX + 7)/8] (donc FILE_DESCRIPTOR_MAX bits minimum).
    Avec pour chaque bit correspondant à un numéro de file descripteur un bit à 0 s'il n'est pas présent et un bit à 1 s'il est présent ?

    J'ai essayé de regarder une implémentation mais c'est un peu illisible^^

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2008
    Messages
    1 514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 514
    Points : 2 483
    Points
    2 483

    Par défaut

    Si tu as beaucoup de file descriptors, typiquement tu utilisera poll() ou epoll() plutôt que select().

  3. #3
    Expert Confirmé Sénior


    Homme Profil pro Denis
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    4 996
    Détails du profil
    Informations personnelles :
    Nom : Homme Denis
    Âge : 21
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2011
    Messages : 4 996
    Points : 14 894
    Points
    14 894

    Par défaut

    Citation Envoyé par matafan Voir le message
    Si tu as beaucoup de file descriptors, typiquement tu utilisera poll() ou epoll() plutôt que select().
    Merci pour ta réponse.
    Si j'ai bien compris le man, poll et epoll donneront directement des structures contenants les files descripteurs ayant reçu un évènement.

    C'est bien plus pratique au niveau programmation mais est-ce qu'il y a des différences niveau performances?
    A partir de combien de file descriptors estimes-tu qu'il y en a "beaucoup" ?

    Pour associer un file descriptor à un utilisateur, il suffit de créer un tableau de pointeur sur une structure utilisateur avec en indice le file descriptor ou connais-tu une meilleure solution ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •