No, I think the locked Graph (current trunk) is the solution to
the problem. What are your reasons to be skeptical about it?
i got this feeling when you described conflict scenario on converters.
which i imagined as something like
1: if (Q.empty)
2: Q.generate_paths();
3: return Q.graph()
4...
thread A checks 1 goes into 2, meanwhile thread B checks 1, also goes into 2.
now because of locking insie graph, we do not crash anymore, fine.
BUT we can can get wrong result - if A builds up different path than B then
the routines for both A and B will retrive only one path insetad of two
different
paths.
From the outside one could only init ad edges, but isn't it only initialized on
startup,
or when the converters change?
But your are right these cases would be problematic.
Peter