voilà une très courte partie d'une classe de téléchargement (quelle surprise, au vu de son nom
) qui doit pouvoir être contrôlée depuis un thread extérieur (ou directement depuis un autre processus, en fait, mais là n'est pas vraiment la question)
J'ai mis en place un système de mutex pour éviter les problèmes d'accès concurrentiels, et ... je me suis dit que préciser que les données de cette classe seraient volatiles aurait pu être un plus :
Code :
- class Downloader {
- // ...
- volatile std::queue<std::pair<std::string, std::string> > _remainingDownloads;
- volatile std::pair<std::string, std::string> _currentDownload;
- volatile Infos _currentDlInfos;
- // ...
- volatile const std::pair<std::string, std::string> ¤tDownload() const {return _currentDownload;};
- };
|
Et là, une fois là, je me demande bien ce que je peux faire de ces données, vu que quelle que soit la fonction que je veux utiliser sur les éléments de cette classe, je me fais jeter violemment parce qu'ils sont volatiles. Evidemment, il n'y a pas de "volatile_cast" pour laisser des passages un peu crades comme on pourrait le faire avec un const (très utile au passage quand on utilise une lib C
) donc dois-je me résoudre à retirer ces volatiles ?