Крайне банальная реализация клиент-серверного взаимодействия на C

Давайте представим следующую задачу. Есть протокол  TCP, и пусть наш клиент будет запрашивать у сервера содержимое каталогов. Для нового соединения будем создавать новый поток, и для них (новых соединений) будем использовать заранее запущенные потоки из пула. Размер пула пускай будет фиксированный.