I've spent some considerable time thinking about this, and I can find no reason to keep the threaded alphabeta/negascout functions in the code base. Threading functionality should be handled at a higher level than this engine, and there is nothing in the multithreaded algorithm that requires low-level access to the engine. We should allow the user to define any method of concurrency that they choose whether it be Erlang, the JVM, or iOS's dispatch queue.
I've spent some considerable time thinking about this, and I can find no reason to keep the threaded alphabeta/negascout functions in the code base. Threading functionality should be handled at a higher level than this engine, and there is nothing in the multithreaded algorithm that requires low-level access to the engine. We should allow the user to define any method of concurrency that they choose whether it be Erlang, the JVM, or iOS's dispatch queue.