
Le 12/01/13 11:51, Andrey Semashev a écrit :
On Saturday 12 January 2013 11:37:30 Vicente J. Botet Escriba wrote:
Hi,
in order to fix this issue, https://svn.boost.org/trac/boost/ticket/5752
: "boost::call_once() is unreliable on some platforms", I would like to
use Boost.Atomic as suggested on the ticket. As Boost.Atomic is not a header-only library the user would need to link with boost_atomic.
Is this an acceptable change? I'm requesting this as recently there were some people reactive to some changes in Boost.Thread. Would this be considered an compatibility issue? If yes should the fix for the call_once issue be included if the user request it using conditional compilation or even go on a separated version of Boost.Thread? I think people were mostly concerned with functionality changes of Boost.Thread while the suggested switch to Boost.Atomic seems more of an implementation issue. IMHO, the switch to Boost.Atomic is a good idea; we should localize the atomic code in one place.
Anyway, can Boost.Thread be modified in such a way so that Boost.Atomic use is not exposed to the user? E.g. so that call_once invokes a compiled function implemented within Boost.Thread library that uses Boost.Atomic to modify the once flag.
yes, this will be great. I don't know Boost.Atomic details to try to do this. Andrey do you mind to provide a patch that doesn't needs to link with boost_atomic? Or, can Boost.Atomic be header-only? Best, Vicente