J'envisage d'utiliser boost::function
dans ma mise en œuvre d'un gestionnaire de minuterie. Au temporisateur un boost::function
sera passé et à l'expiration du temporisateur le rappel sera exécuté. Les heures seront programmées/annulées à une fréquence élevée (~ 1000 actions/s).boost :: utilisation de la mémoire de fonction
Mais je suis préoccupé par la quantité de mémoire tas boost::function
peut utiliser.
Je sais par exemple que boost::asio
utilise beaucoup boost::function
, alors que les exigences de performance pour la librairie sont probablement très élevées.
Qu'en pensez-vous?
Je ne suis pas préoccupé par la taille des données allouées, mais plutôt par les nouvelles/supprimer – dimba
@dimba - vous devrez de toute façon 'new' quelque chose pour suivre les temporisations en attente, si vous faites attention à la mémoire des foncteurs être inclus dans cela ne peut-il pas? –
@Steve Je ne suis pas sûr de comprendre ce que vous voulez dire. L'utilisateur aura une API comme ScheduleTimer (boost :: function <>, ...), donc boost :: function <> déjà allouée par l'utilisateur. Puis-je le faire différemment? J'utilise la 3ème librairie pour la gestion de minuterie (ACE) qui permet de stocker void * pour chaque minuteur actif, donc j'ai besoin de stocker le pointeur store sur boost :: function <>. Puis-je l'utiliser d'une manière ou d'une autre pour éviter l'allocation de mémoire? – dimba