> 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 
 
 

Reply via email to