{
int count = used_numbers();
sudoku result;
+ int stop = 0;
-#pragma omp parallel for
+#pragma omp parallel for firstprivate(stop)
for (int i = 0; i < count; i++) {
int x, y;
sudoku tmp = *this, tmp2;
std::vector<sudoku> results;
- if (done)
+ if (done || stop)
continue;
/* remove a number */
sudoku empty;
//printf("%d, Got multiple results\n", depth);
result = empty;
- #pragma omp flush(done)
+ stop = 1;
}
if (results.empty() && !done) {
depth);
sudoku empty;
result = empty;
- done = 1;
- #pragma omp flush(done)
}
}
return result;