Cameron
Cameron
Sorry, this is the first time anything like this is reported. Even if it takes hours to occur, I will still need an isolated program that reproduces the issue in...
The code you've shared seems fine at first glance. Callstack suggests something else is happening in code not shown here.
If `log_buffer_` is a member of `Logger`, then `Logger::~Logger` is not safe, as `log_buffer_` can be destroyed while it is still being used by the thread running `Logger::Worker`.
This is covered in the README. Order is only preserved between elements enqueued by a given producer.
With one producer FIFO is guaranteed. Can you share a counterexample?
This is not normal, no. Unfortunately I don't have time to try to reproduce right now.
Hard to say why without sample code to investigate.
That's a start. I see you're using integers. Are you using tokens? What sort of contention is there?
For the non-integer types, do they have no-except move constructors? Are they being moved? Consider using producer and consumer tokens. I also encourage you to profile the code to see...
Well, what value is first enqueued? How are you inspecting the first value dequeued?