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