Crie uma função que você deseja que o thread execute, por exemplo:
void task1(std::string msg)
{
std::cout << "task1 says: " << msg;
}
Agora crie o thread
objeto que finalmente chamará a função acima da seguinte maneira:
std::thread t1(task1, "Hello");
(Você precisa #include <thread>
acessar a std::thread
classe)
Os argumentos do construtor são a função que o thread executará, seguido pelos parâmetros da função. O encadeamento é iniciado automaticamente na construção.
Se, mais tarde, você desejar aguardar o término da execução da função, chame:
t1.join();
(Associação significa que o encadeamento que chamou o novo encadeamento aguardará a conclusão do novo encadeamento antes de continuar sua própria execução).
O código
#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();
}
Mais informações sobre std :: thread aqui
- No GCC, compile com
-std=c++0x -pthread
.
- Isso deve funcionar para qualquer sistema operacional, desde que o seu compilador suporte esse recurso (C ++ 11).