$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] [Lockfree] Tagged pointers
From: Phil Endecott (spam_from_boost_dev_at_[hidden])
Date: 2011-07-27 19:16:23
Tim & others,
I understand that your implementation uses tagged pointers to avoid ABA
problems. An issue with tagged pointers is that naively they will be
2*sizeof(T*) and systems may not have atomic operations that operate on
things of that size. Looking at the code, I see that you also have a
"compressed" tagged pointer that is enabled for some architectures.
Having found this code, I now vaguely recall some previous mailing list
discussions about this.
Sometimes it may be possible to claim that users (& reviewers?) of a
library do not need to know about details of this sort because the
library "just works", and that if they are curious they can read the
source. I don't think this is one of those cases. The documentation
should explain in outline how this works, and provide rationale for why
it is how it is.
IIRC, ARM has 64-bit atomics only from architecture version 6k onwards,
and my Boost.Atomic ARM code doesn't use them. This could be fixed.
Regards, Phil.