• [^] # Re: Thread ou processus ?

    Posté par . En réponse au message Le mystère du pointeur global. Évalué à 4.

    Quelques remarques:


    1) utilisation de select, donc de ses limitations, alors que tout
    est dynamique ->dommage pas scalable, et limité en nombre de fd.
    Pourquoi utiliser nap() et appeler également select() au début de
    la boucle ? Pourquoi appeler FD_ZERO à chaque fois alors que il
    suffit d'avoir un FD_SET déjà initialisé qui remettrait à 0
    'setSockets' ?
    FD_ZERO(&blankSockets)
    while ()
    setSockets = blankSockets;
    (mm_net_server.c) (mm_net_nap.c)

    2) remplacer tous les appels à strncpy par memcpy...

    2) le connect est bloquant, penser a mettre le fd on O_NONBLOCK et
    gerer le EINPROGRESS... Idem pour accept. (mm_net_socket.c)

    3) Le type string_t est nase, il aurait fallu avoir un unsigned int
    en plus dans la structure contenant le nombre exacte de bytes
    disponibles différent de la longeur de la string véritable, et
    allouer toujours un peu plus que necessaire. (mm_core_string.c)

    4) trop de semaphore.

    5) trop d'allocation mémoire dans tous les sens, penser à faire des
    pool ou alors allouer les maximums d'objets au début. Malloc est le
    point noir de toute application.

    Les threads c'est bien pour ne pas se prendre la tête à faire
    mieux. Mais pour un serveur c'est pas vraiment le top...

    http://www.kegel.com/c10k.html(...)