Очередь с ограниченной длиной (rust)
Я пишу программу с несколькими потоками. Один поток пополняет очередь, остальные обрабатывают значения из нее.
Так как пополняется она быстрее, чем потоки забирают значения, хотелось бы ограничить ее максимальную длину, дабы избежать чрезмерного потребления памяти.
На данный момент очередь реализована с помощью простого vec, завернутого в Arc.
Это работает, но требует вручную проверять длину перед пополнением, а также создавать цикл с небольшим таймаутом, чтобы вновь проверить наличие свободного места.
Идеальным решением было бы нечто, что позволяет автоматически создавать блокировку потока при вызове push, при условии превышении заданного лимита.