2 Comments
author
Oct 18·edited Oct 18Author

Hey Usama, this is a good point, but I guess the confusion steams from how I formulated the sentences.

In fact, there is a single consumer process, but for every event the data is dispatched to a separate goroutine, causing the main process to NOT block and immediately be able to consume another event.

I will update the post to avoid the confusion. Thank you for pointing that out.

Expand full comment

Your first solution seems to be incorrect. Ringbuffers follow a multiple producer - single consumer model [1]. For one ringbuffer there can be only a single userspace consumer because the consumer is responsible for managing the head pointer into the ringbuffer which is used to begin reads of new data.

Using multiple consumers over a single ring buffer will leads to all kinds of bugs, and corrupted data.

[1] https://github.com/torvalds/linux/commit/457f44363a8894135c85b7a9afd2bd8196db24ab

Expand full comment