(C++11) Duda sobre los threads (SOLUCIONADO)

Llevo un buen rato viendo la referencia pero no consigo ver lo que quiero:
http://en.cppreference.com/w/cpp/thread

Quiero resolver un sudoku por fuerza bruta, asi que tengo un array que simboliza el tablero:
short Tablero[MAX][MAX];


El algoritmo lo tengo pero quería hacerlo multihilo la idea es hacer 9 tableros y pasarlo a 9 hilos (cada uno con una casilla prerellenada con distinto valor). Después esperar y cuando un hilo acabe coger el valor y pasarlo por pantalla (y por supuesto, suspender el resto de hilos).

Creo que me va a estallar la cabeza. ¿Que objeto tengo que usar? Creo que un future no me vale porque retorna el valor (y Tablero lo paso por referencia), promise también hace lo mismo creo.

SOLUCIONADO: Había que jugar con los future:

   future<void> t1[MAX];

    for (short i = 0; i < MAX; i++)
    {
        tablero[i][Inicio.first][Inicio.second] = i+1;
        t1[i] = (async(launch::async,Resolver,tablero[i],ref(preparado),ref(Casillas)));
    }

    short Contador;
    future_status estado;

    while (true)
    {

        for (short i = 0; i < MAX; i++)
        {
            estado =t1[i].wait_for(chrono::milliseconds(1));

            if (estado == future_status::ready)
            {
                Contador = i;
                cout<<"Ganador: "<<Contador<<endl<<endl<<endl;

                goto fin;
            }
        }

    }
fin:
Yo siempre que he programado en C++ lo he hecho apoyándome en Qt, por si te sirve de algo. Así, te creas una clase que herede de QThread, reimplementas el método run() y cuando llamas al método start() desde fuera se pasa a ejecutar lo que hay en el run en un hilo parelelo al del programas principal.
1 respuesta