mutable et impact sur les performances
Bonjour,
J'ai implémenté une classe encapsulant un std::vector et un mutex, car je souhaitait pouvoir utiliser cette classe à partir de différent thread.
Ayant besoin d'accéder à mon vector en lecture, j'ai fait les getters adéquat, à l'origine, une méthode constante. Mais à cause du mutex (un pthread_mutex_t), le compilateur me dispute de ne pas respecter mon "const".
La solution est soit :
- d'enlever le const, mais ça peut produire des effets néfastes dans le reste du code, utilisant mon encapsulation
- utiliser le mot clé mutable
Il m'a semblé judicieux d'utiliser mutable dans ce cas là, mais, toutefois ce mot clé me laisse un arrière gout amère. On indique que l'on a une méthode const, mais elle n'est pas totalement const car on utilise une variable que l'on modifie, mais c'est ok car c'est mutable :aie:
Je sais aussi que les spécifications const permettent aux compilateurs de faire des optimisations. Du coup, qu'est ce qui se passe du coté du compilateur, si j'utilise le mot clé mutable ? Vais-je perdre toutes les optimisations ? Quel est l'impact de ce mot clé ?