Дротик управляет размером потока

#dart #stream #buffer

Вопрос:

У меня возникли проблемы с потоком, из-за которого в моей системе не хватает памяти.

У меня есть процесс, который должен прочитать все дерево каталогов.

Он считывает каждый каталог с потоком для каждого каталога.

По мере чтения каждого каталога файлы из каталога добавляются в глобальный поток. (т. Е. все файлы из всех каталогов добавляются в один центральный поток).

Глобальный поток считывается другой частью приложения, и мы выполняем операцию с каждым файлом.

Операция занимает некоторое время.

Проблема в том, что глобальный поток становится чрезвычайно большим (gt; 1 ГБ) во время работы приложения.

Файловые операции приостанавливают/возобновляют глобальный прослушиватель, но это не останавливает добавление большего количества файлов в глобальный поток (отсюда и использование памяти).

Таким образом, возникает вопрос, существует ли тип потока, который может заставить метод «добавить» ждать, если поток превысит определенный размер.

Единственная идея, которую я придумал, — это обернуть раковину и сохранить счетчик, который заставляет метод добавления раковин ждать. Я бы предпочел использовать готовое решение, если оно существует.

Поэтому, по сути, я ищу поток с фиксированным размером, который заставляет добавление ждать, когда оно достигнет этого размера.