Ну так а как-же, все в одном потоке делается, пока не завершиться одна операция, другая не начнётся. Искать способ разбить на 2 потока,
Но я если честно сделал бы по-другому. Есть одна ф-ция, которая слушает любые запросы от любых клиентов, а в качестве параметров принимает идентификатор клиента (чтобы отличать одного от другого) и собственно параметры того, что мы хотим сделать. Например
Function listen(action, parameters)
If action=="new game"
...