Cita:
Iniciado por razpeitia Hola razpeitia, muchas gracias por tu respuesta, dime si te he entendido bien, tu dices que es un problema concurrencia, pues los aleatorios darán iguales cada vez que se llame la función de crear un aleatorio. O bien te refieres a que los thread puede escribir sobre una variable sumultaneamente y pueden generar problemas (para lo cual uso el mutex).
Te pongo un ejemplo de como uso los threads para que me expliques si eses es el problema (en el siguiente es un ejemplo de como lo utilizo en el algoritmo grande, que no lo pongo porque es super grande jeje y por tanto en este ejemplo no tengo problemas pero indica la manera de cómo los usos).
Código C++:
Ver original#include <iostream>
#include <vector>
#include <mutex>
#include <random>
#include <thread>
using namespace std;
mutex barrera;
random_device rd;
mt19937 generator(rd());
uniform_real_distribution<double> distUni(0.0, 1.0);
void fun(double& suma);
int main(){
int i; double suma = 0;
vector<thread> v;
for (i = 0; i < 8; i++){
v.push_back(thread(fun, ref(suma)));
}
vector<thread>::iterator it;
for (it = v.begin(); it != v.end(); it++){
it->join();
}
cout << "suma: " << suma << endl;
cin.get();
return 0;
}
void fun(double& suma){
double x;
x = distUni(generator);
barrera.lock();
cout << x << endl;
suma += x;
barrera.unlock();
}
Agradezco mucho tu ayuda :D. saludos