Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We now have a use case where we need to support ordering such that if any thread executes
batcher.Put(item1); batcher.Put(item2);
, a single consumer thread will be guaranteed to see item1 before item2. As go's sync package is awesome and doesn't offer a TryLock function, I implemented a basic mutex using a channel of size 1 to support this, which I believe is correct. If you don't think this is efficient enough, it could be implemented using atomics. I think I avoided potential deadlocks while doing this, but it definitely wouldn't hurt to take a close look.@tylertreat-wf @stevenosborne-wf @tylerrinnan-wf @dustinhiatt-wf @alexandercampbell-wf