Erstellen Sie eine Funktion, die der Thread ausführen soll, z. B:
void task1(std::string msg)
{
std::cout << "task1 says: " << msg;
}
Erstellen Sie nun die thread
Objekt, das letztendlich die obige Funktion wie folgt aufruft:
std::thread t1(task1, "Hello");
(Sie müssen #include <thread>
zum Zugriff auf die std::thread
Klasse)
Die Argumente des Konstruktors sind die Funktion, die der Thread ausführen wird, gefolgt von den Parametern der Funktion. Der Thread wird bei der Erstellung automatisch gestartet.
Wenn Sie zu einem späteren Zeitpunkt warten wollen, bis der Thread mit der Ausführung der Funktion fertig ist, rufen Sie auf:
t1.join();
(Verbinden bedeutet, dass der Thread, der den neuen Thread aufgerufen hat, wartet, bis der neue Thread seine Ausführung beendet hat, bevor er seine eigene Ausführung fortsetzt).
Der Kodex
#include <string>
#include <iostream>
#include <thread>
using namespace std;
// The function we want to execute on the new thread.
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");
// Do other things...
// Makes the main thread wait for the new thread to finish execution, therefore blocks its own execution.
t1.join();
}
Weitere Informationen zu std::thread finden Sie hier
- Unter GCC kompilieren Sie mit
-std=c++0x -pthread
.
- Dies sollte für jedes Betriebssystem funktionieren, vorausgesetzt Ihr Compiler unterstützt diese (C++11) Funktion.