J'essaie d'appeler la fonction "Run" dans un nouveau thread. À l'heure actuelle, j'ai ce code en utilisant openMP qui n'exécute pas "Run" dans un nouveau thread. REMARQUE: je ne demande pas d'aide pour utiliser OpenMP. Ce code était juste une solution rapide. Je préférerais une méthode CreateThread() d'aller à ce sujet.Multithreading avec héritage (C++)
vector<ICommand*>* commands;
string strInput;
// For each command...
for(vector<ICommand*>::iterator i = commands->begin(); i != commands->end(); ++i)
{
// ...if the current command we're examining is valid...
if((*i)->ContainsCommand(strInput))
{
// ...run it in a new thread and don't let ZChatInput handle it normally...
#pragma omp sections nowait
{
#pragma omp section
(*i)->Run(strInput);
#pragma omp section
bRet = false;
}
// ...and don't check any more commands.
break;
}
}
Alors, comment cela serait-il possible en utilisant simplement la norme et STL? Bien sûr, je cherche un moyen qui fonctionne :)
Non, désolé. J'essaie de fuir les bibliothèques tierces. Si cette fonctionnalité est dans VS2010, alors je vais l'essayer; mais jusque-là, toujours pas ce que je cherche. De plus, vous avez oublié de transmettre strInput en tant que paramètre. –
quel est le problème avec boost? C'est presque aussi standard que stl. Beaucoup de bibliothèques boost vont dans le nouveau standard et je ne serais pas impressionné si les threads boost devenaient le nouveau standard (je sais qu'il y a un nouveau standard pour les threads, mais je ne sais pas s'ils sont similaires au boost du thread modèle) –
C++ 0x aura des fonctions de thread qui ressemblent à boost.thread. Voir http://en.wikipedia.org/wiki/C%2B%2B0x#Threading_facilities –