Utwórz funkcję, która ma być wykonywana przez wątek, np .:
void task1(std::string msg)
{
std::cout << "task1 says: " << msg;
}
Teraz stwórz thread
obiekt, który ostatecznie wywoła powyższą funkcję w następujący sposób:
std::thread t1(task1, "Hello");
(Musisz #include <thread>
uzyskać dostęp do std::thread
zajęć)
Argumenty konstruktora to funkcja, którą wykona wątek, a następnie parametry funkcji. Wątek jest automatycznie uruchamiany podczas budowy.
Jeśli później chcesz poczekać na zakończenie wątku w celu wykonania funkcji, wywołaj:
t1.join();
(Dołączenie oznacza, że wątek, który wywołał nowy wątek, będzie czekał na zakończenie nowego wątku, zanim będzie kontynuował wykonywanie).
Kod
#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();
}
Więcej informacji o std :: thread tutaj
- Na GCC skompiluj z
-std=c++0x -pthread
.
- Powinno to działać dla każdego systemu operacyjnego, pod warunkiem, że Twój kompilator obsługuje tę funkcję (C ++ 11).