TTCPServer и два потока

Доброго времени суток, форумчане!

У меня появилась такая задачка: надо организовать получение и отправку данных через серверный сокет. В программе должно быть 2 потока: главный и поток для сокета. Для каждого пользователя создавать отдельный поток нельзя, так как выполняются не потоко-безопасные функции.

Я попробывал реализовать это через компонент

TTcpServer

, но как мне показал менеджер задач (Process Explorer), новый поток во время начала прослушки порта не создается, да и когда пользователь подключается - тоже нет нового потока. Судя по всему все работает в главном потоке, что меня не устраивает.

Вопросы

:

Как организовать такую работу.
Возможно ли сделать очередь на подключение к сокету (чтобы работа с ним была синхронная, один клиент получил ответ - запрос второго клиента, из очереди, пошел на обработку).
Где можно почитать как вообще это все работает, а то все эти коды примитивных чатов не позволяют мне узнать то, с чем у меня возникла проблема.