On Tuesday, 27 August 2013 at 19:50:03 UTC, luminousone wrote:

I was under the impression that the atomic spinlock has a lower latency for any waiters, then a mutex when its unlocked?

I am using this for a temporary or depending on performance, a perminate replacement for std.concurrency send/receive until such time as bugs in std.variant are fixed.

I have a thread with an opengl context, and I am using the queue to send messages to this thread containing interface Drawable objects, that have any needed preprocessing on them done such that only opengl calls have to be made to the video card to render it.

A mutex usually have a very fast uncontended path. It only blocks and is slow when already taken.

You can think of it like a spinlock + a blocking safety net.
In the uncontended case, the mutex with fast path will hardly be any slower than a spinlock.


Use a spinlock instead if:
- you are dead sure you won't spin for "too long"
- you don't need being reentrant
- you don't want this performance hysteresis (fast while uncontended, slow when things begin to creep in thread queues)

Reply via email to