
On Fri, Apr 30, 2010 at 5:04 PM, Janek Kozicki <janek_listy@wp.pl> wrote:
Hello Helge,
What would it take to get this code to work?
std::vector<boost::atomic<Something> > v; v.resize(100);
It'll never work: atomic<T> has a deleted copy constructor, and standard containers only work with copyable types. For atomic<T> to work, T must be trivially copyable (basically it must be a POD). Unless T is small (<= 64 bits) i'd expect atomic<T> to be implemented with a (per-object) mutex, but: 'atomic<T>' only supports a few operations (it does not reexport T's interface), so you'd have to reimplement your methods in terms of that limited set operations. If you are not familiar with lock-free coding you might be better off explicitly adding a mutex to 'Something', and implementing your methods the traditional way. br, andras