$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] first steps to submitting - boost :: observers
From: Gavin Lambert (gavinl_at_[hidden])
Date: 2016-09-18 21:54:28
On 19/09/2016 10:53, Robert McInnis wrote:
> On Sunday, September 18, 2016 6:50 AM, Bjorn Reese wrote:
>> What are the advantages of this library over Boost.Signals2 [1]?
>
> Afaik, Signals2 is not meant to be associated with a single instance of a
> single object representing a particular event produced by that object.
I'm not sure I'm parsing that explanation correctly, but Signals2 is a
generic thread-safe event-raising mechanism; it can thus be used to
raise events from a single instance or static class-based, as desired.
Typically the observee/publisher provides the event/signal, but other
models can be possible with some finagling, if such is desired -- and
it's fairly straightforward to build hybrid patterns with it such as
subscribing to a container to indirectly subscribe to the container's
contents (assuming that the container tracks insert/remove actions).
It's also trivial to do things like give it a different mutex type, so
you can have your atomic spinlock mutexes if you wish. (I usually do
this myself.)
>> Observers are invoked while the mutex is locked, so observers cannot make
>> calls on the subject.
>
> Readers may read the value but updaters are restricted. Which is as it
> should be.
That's debatable, and imposes some limitations that can be irritating in
practice. Signals2 does not have this restriction.