Friday, January 29, 2010

comp.programming.threads - 2 new messages in 2 topics - digest

comp.programming.threads
http://groups.google.com/group/comp.programming.threads?hl=en

comp.programming.threads@googlegroups.com

Today's topics:

* What exactly is non-blocking synchronization?. - 1 messages, 1 author
http://groups.google.com/group/comp.programming.threads/t/e470a52f60e9a599?hl=en
* memory_order_acquire/release in terms of LoadStore/LoadLoad/... - 1 messages,
1 author
http://groups.google.com/group/comp.programming.threads/t/c65d8b1eb19fcc31?hl=en

==============================================================================
TOPIC: What exactly is non-blocking synchronization?.
http://groups.google.com/group/comp.programming.threads/t/e470a52f60e9a599?hl=en
==============================================================================

== 1 of 1 ==
Date: Wed, Jan 27 2010 8:49 pm
From: "Chris M. Thomasson"


"persres" <persres@googlemail.com> wrote in message
news:29f7d3d3-1f36-4826-933b-1192b0cdf0db@n4g2000yqf.googlegroups.com...
> What is non-blocking synchronization?. What is lock free and wait free
> algorithm? Can someone please explain?

I would classify lock-free as having to deal with the possibility of a
failure condition that denotes forward progress "has occurred" and the
operation should be tried again (e.g., failed CAS-loop means another thread
has finished, or is successfully progressing through the algorithm.)

Wait-free basically defines true forward progress in and of itself because
there is no looping on a shared failure condition. All the threads just
progress through the algorithm at their own time. Nothing holds anything
back such that every thread can make successful progression regardless of
any other threads actions.

That is a high-level brief description of wait-free progression. It does not
deal with actual architecture concerns. For instance, an atomic
fetch-and-add operation on the x86-32/64 is loopless in software. You just
execute the instruction and the hardware does it's thing. However, on
systems with LL/SC (e.g., PPC) you have to manually build the damn
fetch-and-add instruction in software. Yes, a loop is required!

;^(...


==============================================================================
TOPIC: memory_order_acquire/release in terms of LoadStore/LoadLoad/...
http://groups.google.com/group/comp.programming.threads/t/c65d8b1eb19fcc31?hl=en
==============================================================================

== 1 of 1 ==
Date: Thurs, Jan 28 2010 11:26 pm
From: frege


On Jan 25, 11:41 am, frege <gottlobfr...@gmail.com> wrote:
> For C++0x (and for 'acquire' and 'release' terminology in general),
>
> acquire == LoadLoad + LoadStore
> release == StoreStore + LoadStore
>

It looks like this is the conclusion. I've posted some of my research/
references and conclusions at http://blog.forecode.com/2010/01/29/barriers-to-understanding-memory-barriers/
. I'll probably add some more references there as I find them.

Tony


==============================================================================

You received this message because you are subscribed to the Google Groups "comp.programming.threads"
group.

To post to this group, visit http://groups.google.com/group/comp.programming.threads?hl=en

To unsubscribe from this group, send email to comp.programming.threads+unsubscribe@googlegroups.com

To change the way you get mail from this group, visit:
http://groups.google.com/group/comp.programming.threads/subscribe?hl=en

To report abuse, send email explaining the problem to abuse@googlegroups.com

==============================================================================
Google Groups: http://groups.google.com/?hl=en

No comments: