Exactly.  Hence my suggestion :-). Non blocking explicit failure plus
(optionally adjustable) boundedness.

I believe some folks recently hacked out a nonblocking queue for rust a
month or so ago in the context of work stealing right?

On Thursday, December 26, 2013, Daniel Micay wrote:

> On Thu, Dec 26, 2013 at 4:32 PM, Daniel Micay 
> <danielmi...@gmail.com<javascript:;>>
> wrote:
> > On Thu, Dec 26, 2013 at 4:19 PM, comex <com...@gmail.com <javascript:;>>
> wrote:
> >> On Thu, Dec 26, 2013 at 8:48 PM, Daniel Micay 
> >> <danielmi...@gmail.com<javascript:;>>
> wrote:
> >>> Acquiring and releasing a mutex when there's low contention takes two
> >>> atomic operations. Switching to a linked data structure adds far more
> >>> overhead than an extra atomic operation.
> >>> [...]
> >>> A simple array-backed circular buffer has a tiny lock scope, so it
> >>> won't ever have high contention. In a less simple case, a mutex will
> >>> spin for a bit before falling back to a `futex` system call.
> >>
> >> Fair enough, but why do you assume a lock-free queue is a linked data
> >> structure?  A simple (bounded) array-backed circular buffer can be
> >> lock-free too and then there are zero atomic operations.
> >
> > Lock-free data structures use atomic operations... you're doing at
> > least one atomic operation or you won't have consistency between
> > threads. An atomic operation will result in cache synchronization and
> > stall the CPU pipeline. On an architecture with a weaker memory model
> > (not x86), it might not have to stall the pipeline as much if you use
> > a weaker ordering.
>
> Anyway, I think there's a misunderstanding in this thread of what
> locking is. A blocking queue is by definition not lock-free/wait-free,
> since the wait is known as a lock. It can be done via a spin lock, a
> system call like `futex` or the mix used by Linux mutexes but it's a
> lock by any other name.
> _______________________________________________
> Rust-dev mailing list
> Rust-dev@mozilla.org <javascript:;>
> https://mail.mozilla.org/listinfo/rust-dev
>
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to