Использую TUDPBlockSocket для общения клиента и сервера.
Клиентов более 100.
В будущем планируется организовать суб-сервера группирующие и обслуживающие подгруппы клиентов, а так же сбрасывающие итоги на мастер-сервер.
На клиенте все просто:
  - отправили запрос;
  - получили квитанцию о доставке запроса;
  - перешли в режим ожидания ответа;
  - получили ответ.
На сервере:
Планирую 
  - в отдельном потоке читать из сокета (тут же отправив квитанцию о получении запроса), и через критическую секцию (КС_БВЗ) сохранять в буфер входящих запросов;
  - в другом отдельном потоке через КС_БВЗ читаем запросы, и для каждого отдельного запроса порождаем поток обработчик;
  - поток обработчик результат сохраняет через критическую секцию (КС_БГО) в буфер готовых ответов;
  - в третьем отдельном потоке через КС_БГО читаются ответы и через сокет отправляются клиенту.
Что мне хотелось бы узнать:
  Как правильно организовать доступ к единственному сокету из двух потоков, которые: один читает из него, другой отправляет ответы через него?
Как мне это видится:
  Через критическую секцию организовать доступ к сокету. Но если я в один момент отправляю ответ, и на сокет пришел запрос - никакого казуса не выйдет?
P.S. Если можно, то объясните подробно: что конкретно блокируется и в какой момент при работе с сокетом? То, что основной процесс переходит в ожидание - это понятно, но в моем случае как это выглядит?
Спасибо!
			
		
