Probably your best plan would be for one or other of the threads to be responsible for the keyboard, and if they get a key they are not interested in they pass it to the other thread. Whether you use pipes for that is up to you, but it is probably the easiest way; multi-threading contention is a complex subject.
A simple solution would be to wrap the keyboard routines in a mutex, so only one thread could be in there at a time. The player thread might be in and out quickly, whereas the selection thread could keep it locked while the selection was happening. During which time the player thread repeatedly asks for the mutex, but times out and goes about its other business.