В архитектуре клиент-сервер у меня есть сервер, который принимает подключения от клиентов. я хочу, чтобы сервер принимал 3 одновременных соединения, а остальные соединения (когда они были доступны) были переведены на удержание для обслуживания в режиме FIFO. Каким будет правильный способ?Соединения сокетов очереди в C
Один из возможных подходов, что я думал это
Создание счетчика и проверка, если ее меньше, чем 3, принимать, обслуживать клиентов в новом потоке, и приращение счетчика. Когда счетчик больше 3, просто примите и сохраните дескриптор сокета в очереди. Когда клиент завершает свою работу, остановите поток (например, присоединившись) и счетчик декретов, чтобы разрешить другому клиенту. Если очередь не пуста, введите дескриптор сокета, создайте поток и выполните обслуживание клиента.
Ваш отзыв приветствуется.
Или вы можете иметь 3 рабочих потока, каждый из которых запрашивает запросы на соединение из очереди. (В общем, прием соединения, а затем сохранение его на удержании может быть не лучшим опытом с точки зрения клиента.) – Inspired
, поэтому вы имеете в виду, что я держу все соединения в очереди и имею 3 рабочих потока, которые продолжают появляться и обслуживать? , о, да, я согласен с вами в этом, но это просто для практики. –
Исправить. Это просто упрощение схемы, которую вы предложили (не более создания/объединения потоков, а счетчик не нужен). – Inspired