Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/06/2013, 13:05
amchacon
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: (C++11) Duda sobre los threads

Cita:
El algoritmo ya lo tengo
Tengo el algoritmo, aunque lo pruebo en sudokus 2x2 (más que nada para que no me tarde):

Código C++:
Ver original
  1. bool Resolver(short Tablero[MAX][MAX])
  2. {
  3.     vector<pair<int,int> > Casillas;
  4.     for (short j = 0; j < MAX;j++)
  5.         for (short i = 0; i < MAX;i++)
  6.             if (Tablero[i][j] == 0)
  7.                 Casillas.push_back(make_pair(i,j));
  8.  
  9.     register short Inicio = Casillas.size()-1;
  10.  
  11.     short Actual;
  12.     short i;
  13.  
  14.     for (i = 0; i < Casillas.size();i++)
  15.     {
  16.             Tablero[Casillas[i].first][Casillas[i].second] = 1;
  17.     }
  18.  
  19.  
  20.     while(true)
  21.     {
  22.         for (i = 1; i < MAX;i++)
  23.         {
  24.  
  25.             Tablero[Casillas[Inicio].first][Casillas[Inicio].second] = i;
  26.  
  27.             if (Resuelto(Tablero))
  28.                 return true;
  29.         }
  30.  
  31.         Tablero[Casillas[Inicio].first][Casillas[Inicio].second] = 1;
  32.  
  33.         if (Inicio == 0)
  34.                 Inicio++;
  35.         else
  36.         {
  37.             Actual = Inicio-1;
  38.  
  39.             Tablero[Casillas[Actual].first][Casillas[Actual].second] ++;
  40.  
  41.             while (Tablero[Casillas[Actual].first][Casillas[Actual].second] > (MAX))
  42.             {
  43.                Tablero[Casillas[Actual].first][Casillas[Actual].second] = 1;
  44.  
  45.                 Actual--;
  46.                
  47.                 if (Actual == -1)
  48.                 {
  49.                     return false;
  50.                 }
  51.                 Tablero[Casillas[Actual].first][Casillas[Actual].second]++;
  52.  
  53.             }
  54.  
  55.         }
  56.  
  57.     }
  58.  
  59. }

Ahora quiero hacerlo mutihilo, tengo la idea como hacerlo (una casilla prerellenada que tiene su valor entre 9 hilos). Lo que me falta es la parte de implementación.

¿Como saber cuando un hilo ha finalizado? ¿Como paro el resto de hilos sin tener que esperar a que acabe?

Última edición por amchacon; 29/06/2013 a las 13:33