I just implemented a nice-working evaluation function for checkers. Current implementation uses threads and separate transposition tables for each.
I spawn a thread for every move that is available in the root node (initial board position) and then analyze it using negamax with alpha-beta pruning. I always do it for the CPU player to find a best move. I don't analyze moves available to the user.
Now I have two considerations:
Can I safely share a single transposition table between all these threads (threads will be synchronized of course)?
Every time I start a new analysis, should I clear the table(s) or they are safe to use?
Any thoughts?