> Thread 1: Scans the breadth of the problem space, generates positions and
stores them in a priority queue.
> Thread 2 : Starts computing the solution, popping each position from the Q
and trying to solve.
Sandeep -
One thing you could try would be to have a tread dequeue, generate
all following boards (positions) and then spawn off a new thread to expand
each valid (not previously seen) boards. There will need to be some
communication: once one task has a solution, the rest should stop working.
This kind of scheme is used on multi-processor system, though they
usually use a Priority Queue of some kind to buffer the new boards
(positions) once you run out of processors.
- jeff parker