Cree una función que desee que ejecute el hilo, por ejemplo:
void task1(std::string msg)
{
std::cout << "task1 says: " << msg;
}
Ahora cree el thread
objeto que finalmente invocará la función anterior de la siguiente manera:
std::thread t1(task1, "Hello");
(Necesitas #include <thread>
acceder a la std::thread
clase)
Los argumentos del constructor son la función que ejecutará el hilo, seguidos de los parámetros de la función. El hilo se inicia automáticamente en la construcción.
Si más adelante desea esperar a que se termine el hilo ejecutando la función, llame a:
t1.join();
(Unirse significa que el hilo que invocó el nuevo hilo esperará a que el nuevo hilo termine la ejecución, antes de que continúe su propia ejecución).
El 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();
}
Más información sobre std :: thread aquí
- En GCC, compila con
-std=c++0x -pthread
.
- Esto debería funcionar para cualquier sistema operativo, dado que su compilador admite esta característica (C ++ 11).