Pavel Vasiliev wrote:
[...]
> Thread A, in release_strong:
> atomic_decrement(&strong_count) == 0,
> enter strong_refs_lost(),
> lock
ACK.
> Thread B, in acquire_strong_from_weak: ....
NAK.
Thread B, in release_weak:
atomic_decrement(&weak_count) == 0,
> Thread A, in strong_refs_lost:
> see strong_count == 0,
acquire_weak() --> weak_count == 1,
...
enter release_weak(),
atomic_decrement(&weak_count) == 0,
Thread B, enter weak_refs_lost():
...
destruct_self()
Thread A, enter weak_refs_lost():
WHACK!
Or am I just missing and/or misunderstanding something?
regards,
alexander.
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost