J'apprends actuellement sur la concurrence en C++ et je suis tombé sur un vecteur de threads, ce que je crois sera possible en C++ 0x. Cependant, mon compilateur actuel ne semble pas avoir une implémentation de conteneurs de déplacement et donc des erreurs sont générées car std::thread::thread(const std::thread&)
est supprimé, c'est-à-dire que je ne peux utiliser que l'affectation de constructeur/déplacement avec std::thread
.allocateur personnalisé en utilisant le déplacement pour le vecteur de thread
Suis-je raison de penser que je pouvais contourner ce problème en écrivant une coutume allocateur utilisant
void MyAllocator::construct (pointer p, reference val)
/* should be non-const reference to val because using move constructor? */
{
new ((void*)p) T (std::move(val));
}
plutôt que
void allocator::construct (pointer p, const_reference val)
{
new ((void*)p) T (val);
}
? Ou une autre variation sur ce thème (éventuellement en utilisant une surcharge de MyAllocator :: construct). NB: Ceci est principalement destiné à être un exercice éducatif à court terme et un travail assez performant pour jouer avec des filets dans des conteneurs. Je n'utiliserais que MyAllocator
dans ce contexte. Cependant, veuillez également me diriger vers toutes les bibliothèques qui pourraient avoir cette implémentation afin que je puisse avoir une idée de la source.