Alexander Terekhov wrote: > 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! Ok, indeed "WHACK!" :-) But my idea with initial weak_count == 0 in any case was not good. Please see my previous reply that fixes it, now reading not "aesthetic feelings" but "ordinary correctness". (Hope to have this correctness now.) Pavel _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost