Unlimited buffers tend to get unlimited big, crashing your app with
out-of-memory. Huge buffers also add lag to the signal. With no
bandwidth issues, buffers are usually almost empty, with bandwidth
issues, buffers are usually almost full.

Advertising

In the end you set them as big as necessary, and as small as possible.
And giving them a fixed size (possibly configurable) is less
complicated, especially in a multi-threaded environment.

I such case I would suggest to give the buffer an initial and maximum
size, but I'm not sure if that's worth implementing. But the initial
size should definitely be configurable.