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

Reply via email to