Boost logo

Boost :

From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2020-12-04 17:39:15


On 12/4/20 7:11 PM, Billy via Boost wrote:
> Hi Boost,
>
> We're considering implementing our own atomic ref count for
> `intrusive_ref_count` [*]. A question came up. Is the `CounterPolicyT`
> template parameter a stable extension hook, or are users expected to
> strictly stick to the two provided policies of `thread_unsafe_counter` and
> `thread_safe_counter`? I can see that under the hood, these policy structs
> are trivially simple and we can just do it, but the question is really
> about whether the lack of documentation implies that it's a private boost
> detail.
>
> From
> https://www.boost.org/doc/libs/1_74_0/libs/smart_ptr/doc/html/smart_ptr.html#intrusive_ref_counter
>
> "The second parameter is a policy that defines the nature of the reference
> counter. The library provides two such policies: thread_unsafe_counter and
> thread_safe_counter."

As an original implementor of the component, I did not intend this to be
an extension point. If I wanted to customize reference counting, I would
probably not use intrusive_ref_counter and instead implement
intrusive_ptr_add_ref/release or a similar base class to my requirements.

> [*] Incidentally we want to increment with memory order relaxed instead of
> acq_rel.

This would probably be a good optimization in atomic_count.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk