Итак, один (или более?) Из ваших клиентов блокируется, когда несколько клиентов работают, подключаются и отправляют в показанном узком цикле?
Взломать код после его блокировки и опубликовать трассировку стека.
Вы уверены, что не блокируете 20-секундное ожидание, которое происходит в примере кода, когда все экземпляры канала заняты? Я не думаю, что это вероятно, но это возможно ...
Возможно, вам лучше опубликовать точный код, который вы используете. Возможно, вы ошиблись в том, как перенесли код в вызываемую функцию, и у вас могут быть утечки ресурсов или что-то, что впоследствии вызывает у вас проблемы.
Поскольку вы работаете с несколькими клиентами, может быть полезно вывести счетчик циклов для каждого из них, чтобы показать, сколько итераций они выполнили перед тем, как решить вашу проблему; возможно, это всегда одинаковое количество полных итераций? Вы зависаете быстрее с большим количеством клиентов? Менее быстро с меньшим количеством клиентов?