Tu mayor problema fue serializar toda la ejecución del programa. Creaste un monitor gigante que serializa todo, y aún así tenés Race condition. Para la última chance tenés que cambiar de forma obligatoria los siguientes elementos:
Corregir la serialización y la RC. En el ticket https://github.com/andy0013/TP2/issues/23 se da un pantallazo de como solucionarlo (que el dataLoader use al operationStrategy para crear instancias en el heap de un Operation, y que cada partition tenga una instancia distinta de las operaciones. Lo que comparte es el resultado, no toda la operación).
Corregir las copias indeseadas. Hacer pasaje por referencia o aplicar move semantics.
Corregir el uso de move semantics marcado. (puede haber mas de lo que marqué, revisar)
Reemplazá el uso de atoi por funciones mas estandar (revisar las correcciones que se propone una idea).
Tu mayor problema fue serializar toda la ejecución del programa. Creaste un monitor gigante que serializa todo, y aún así tenés Race condition. Para la última chance tenés que cambiar de forma obligatoria los siguientes elementos:
atoi
por funciones mas estandar (revisar las correcciones que se propone una idea).