Todo depende del estandar de C++ que uses.
Si usas el nuevo estadar C++11. Este tiene una clase para threads bastante sencilla:
Crear un thread#include <iostream>
#include <thread>
using namespace std;
void hilo()
{
cout<<"Creando hilo..."<<endl;
}
int main()
{
thread t(hilo);
t.join();
return 0;
}
Crear un thread con parametros#include <iostream>
#include <thread>
using namespace std;
void hilo(int a,int b)
{
cout<<"Creando hilo..."<<endl;
cout<<"Los argumentos son "<<a<<" y "<<b<<endl;
}
int main()
{
thread t(hilo,2,3);
t.join();
return 0;
}
Crear un thread en un miembro no estatico de una clase:#include <iostream>
#include <thread>
using namespace std;
class A
{
int dato;
public:
A(int n) {dato = n;}
void hilo()
{
cout<<"Creando hilo..."<<endl;
cout<<"El objeto contiene "<<dato<<endl;
}
};
int main()
{
A Objeto(1);
thread t(&A::hilo,Objeto);
t.join();
return 0;
}
Los códigos funcionan perfectamente en mi compilador. Si no funciona en el tuyo es porque o bien, tienes que activar el modo C++11 (en el Mingw es -std=c++11).
O bien, tu versión del compilador no soporta la nueva clase thread (es una clase joven y no todos los compiladores se han actualizado). Te dejo mi compilador por si te interesa (incluye la librería gráfica SFML, por eso ocupa de más):
https://dl.dropboxusercontent.com/u/69551225/x64-4.8.0-release-posix-seh-rev2.rar