Boost logo

Boost :

Subject: Re: [boost] [lockfree] review
From: Tim Blechmann (tim_at_[hidden])
Date: 2011-08-01 08:50:06

[quick post, have some more in my outbox, but i'm at a conference this week,
where they cut imap/smtp ports]

>> Anyway, what's the "wrong order?" If one thread is depending on the
>> order of things that happen in another thread without both threads using
>> the synchronization necessary to ensure that order, it's a race
>> condition (a.k.a. a bug), right?
> All of the classic lock-free algorithms, including those that are
> the basis for the synchronization primitives we should usually use,
> have data races. At a low level it is sometimes necessary to use a
> variable for synchronization.

the fifo code for example contains code like:

atomic<> head_, tail_;

head = head_.load();
tail = tail_.load();

head2 = head_.load();

if (head == head2)
    do something

the correctness of this algorithm depends on the order of the loads: load head
before tail and load tail before head2. without a memory model, both
the compiler
and the CPU are allowed to reorder loads (or head2 could simply use
the value of
head without actually reloading it)

cheers, tim

diese nachricht wurde ueber gesendet
this message was sent through's webmail.

Boost list run by bdawes at, gregod at, cpdaniel at, john at