Ver Mensaje Individual
  #10 (permalink)  
Antiguo 22/03/2015, 04:19
amchacon
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: El gran misterio de unos threads

No es buena práctica hacer locks() directamente, es mucho mejor usar una clase envolvente como unique_lock:

Código C++:
Ver original
  1. void fun(double& suma){
  2.     double x;
  3.     x = distUni(generator);
  4.     unique_lock<std::mutex> control(barrera);
  5.     cout << x << endl;
  6.     suma += x;
  7. }

Los unique_lock cierran el mutex en el constructor y lo liberan en el destructor. Esto es mucho más seguro porque en caso de que salte una excepción, te aseguras que se suelte el mutex.