Для отладочной работы с железякой я сварганил простейший велосипед. Никаких потоков: просто поочередный опрос (select) терминала и cdc-acm с чтением, если есть данные. На малых размерах посылки это работает, а вот на больших почему-то нет-нет, да происходит косяк: считываются данные из первого буфера (64 символа — размер буфера USB cdc-acm), а второй пропускается. И получается обрезанный вывод данных.
Я уже время задержки опроса терминала до 500мкс уменьшил (чтобы было явно меньше времени между опросами USB), но все равно получаются пропуски.
Неужто никак не обойтись без потоков (т.е. слушать USB одним потоком, запихивая данные куда-нибудь в очередь)?