La plupart des applications que j'ai fait avec libevent impliquent un rappel de lecture et chaque fois qu'une nouvelle connexion est ouverte pour une demande que j'allouent un nouvel événement avec ::event_new()
puis ajouter cet événement à la base d'événements via ::event_add()
Comment partager callbacks dans libevent
Mais le problème est que chaque fois qu'une nouvelle requête est ouverte, j'alloue de la mémoire et l'ajoute à la boucle d'événements, alors qu'en réalité je devrais partager des rappels et des événements pour des descripteurs de fichiers. L'allocation de mémoire accordée n'est pas un goulot d'étranglement pour une telle application, libevent offre-t-elle un moyen de partager des événements avec plusieurs descripteurs de fichiers?
Que signifie «partage des rappels et des événements pour les descripteurs de fichiers» dans votre question? Les allocations de mémoire sont inévitables pour stocker l'état d'une connexion pour le traitement. Un 'événement' a son état complètement différent de tout autre événement. Comment pouvez-vous partager cela pour réaliser différentes fonctionnalités? Et, 'des descripteurs de fichiers 'non utilisés (fermés) sont réutilisés par le système d'exploitation pour' select', 'poll',' epoll', etc. Pouvez-vous élaborer un peu plus sur ce que vous voulez exactement faire? – Azeem
@Azeem j'ai demandé puisque tous les événements de lecture que j'ai sont les mêmes sauf pour le descripteur de fichier qu'ils attendent – Curious
Pouvez-vous donner un exemple de code? Veuillez éditer votre question avec un exemple de code de support. – Azeem