J'ai été surpris de voir toutes les réponses a choisi d'utiliser la 3ème parties au lieu de simplement en utilisant std::thread
, donc je tiens à le signaler.
Créer une fonction que vous souhaitez que le thread à exécuter. Je vais vous montrer par un exemple trivial:
void task1(std::string msg)
{
std::cout << "task1 says: " << msg;
}
Maintenant créer l' thread
objet qui finira par appeler la fonction ci-dessus comme suit:
std::thread t1(task1, "Hello");
(Vous avez besoin d' #include <thread>
pour accéder à la std::thread classe)
Comme vous pouvez le voir, le constructeur sont les arguments de la fonction, le thread va exécuter, suivie par la fonction de paramètres.
Enfin, le joindre à votre thread principal d'exécution comme suit:
t1.join();
Résultat
L'ensemble du code est ceci:
#include <string>
#include <iostream>
#include <thread>
using namespace std;
//The function we want to make the thread run.
void task1(string msg)
{
cout << "task1 says: " << msg;
}
int main()
{
// Constructs the new thread and runs it. Does not block execution.
thread t1(task1, "Hello");
//Makes the main thread wait for the new thread to finish execution, therefore blocks its own execution.
t1.join();
}
Plus d'informations sur les std::thread ici
- Sur GCC compiler avec
-std=c++11
.
- Sur les versions de GCC 4.7 ci-dessous, utilisez
-std=c++0x -pthread
(au lieu de -std=c++0x
).
- Cela devrait fonctionner pour n'importe quel système d'exploitation, l'obtention de votre compilateur prend en charge ce (C++11).