Comment créer un tableau d'objets thread dans C ++ 11?
Je veux apprendre comment créer plusieurs threads avec la nouvelle norme C++ de la bibliothèque et de stocker leurs poignées dans un tableau.
Comment puis-je commencer un thread?
Les exemples que j'ai vu commencer une discussion avec le constructeur, mais si j'utilise la matrice, je ne peux pas appeler le constructeur.
#include <iostream>
#include <thread>
void exec(int n){
std::cout << "thread " << n << std::endl;
}
int main(int argc, char* argv[]){
std::thread myThreads[4];
for (int i=0; i<4; i++){
//myThreads[i].start(exec, i); //?? create, start, run
//new (&myThreads[i]) std::thread(exec, i); //I tried it and it seems to work, but it looks like a bad design or an anti-pattern.
}
for (int i=0; i<4; i++){
myThreads[i].join();
}
}
source d'informationauteur Squall
Vous devez vous connecter pour publier un commentaire.
Rien de fantaisie nécessaire; il suffit d'utiliser l'affectation. À l'intérieur de votre boucle, écrire
et cela devrait fonctionner.
Avec C++0x /C++11, essayez d'utiliser des vecteurs au lieu de tableaux de fils; quelque chose comme ceci:
Edit: Si vous voulez vraiment pour gérer l'allocation de la mémoire vous-même et utiliser un tableau de pointeurs (c'est à dire les vecteurs ne sont pas votre truc), alors je ne peux pas le recommander valgrind assez haut. Il a de la mémoire allocation des pions et du fil de dames, etc, etc. Inestimable pour ce genre de chose. En tout cas, voici un exemple de programme utilisant un tableau de manuellement alloué fils, et il nettoie après lui-même (pas de fuites de mémoire):