Я поддерживаю пул соединений размера N и имею семафор размера N, контролирующий доступ к каждому соединению в пуле. Приложение получает семафор при попытке передачи данных и освобождает его при получении ответа или времени ожидания сокета.
В пуле соединений работает фоновый поток, который периодически отправляет тактовые импульсы для каждого соединения. Теперь, если сердцебиение не срабатывает, тогда это соединение закрывается, и предпринимается попытка создать новое. Я хочу убедиться в том, что при открытии и закрытии соединения в пуле я хочу, чтобы разрешения увеличивались и уменьшались, чтобы это напрямую отражало количество соединений в пуле. Я могу уменьшить количество разрешений, используя API reduPermits (m), но для увеличения единственный ли способ вызывать функцию release () (даже если она не была получена) несколько раз на семафоре?