Switch searcher.NewSearch to be far, far more synchronous than it was before. This leads to a 49% performance speed up. Still defaulting to OldSearch.
Switch searcher.NewSearch to be far, far more synchronous than it was before. This leads to a 49% performance speed up. Still defaulting to OldSearch.

Merge branch 'muc-find-synchronous-impl' into minimize-unnecessary-culling

* muc-find-synchronous-impl:
  Updated TODOs to remove some completed ones.
  Twiddled the number of threads for the synchronous NewSearch. Got it down to a whopping 49% faster than the current NewSearch that uses all of the extra channels.
  A mondo commit. Switch to using the synchronousFindCoordinator for NewSearch, which leads to a 32% time reduction right out of the box.
  Revert "Added a done channel to synchronousFindCoordinator that will signal back to the main thread when we're done."
  Added a done channel to synchronousFindCoordinator that will signal back to the main thread when we're done.
  Defined synchronousFindCoordinator. Not used yet in NewSearch.
  Protect more actions in humanSolveSearcher with mutexes, since in the next commit or two we'll start accessing things from more threads.
  Moved humanSolveItem.Add() to humanSolveSearcher.AddItem(), which is where it belongs.

jkomoros/sudoku,jkomoros/sudoku,jkomoros/sudoku