$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost]  signal is thread-safe?
From: jon_zhou_at_[hidden]
Date: 2009-09-26 04:14:47
I wonder if the 'signal' lib is thread-safe?
i.e. a publisher is doing something, at the same time a subscriber is trying to 'disconnect' from the slot, will it get problem?
Found that it only set a flag to indicate the slot in disconnection, but never remove the slot?
So that the lib is thread-safe?
**********************
It won't remove anything from the 'slots' container:
    template<typename Function>
    void do_disconnect(const Function& f, mpl::bool_<false>)
    {
      // Notify the slot handling code that we are iterating through the slots
      BOOST_SIGNALS_NAMESPACE::detail::call_notification notification(this->impl);
      for (iterator i = impl->slots_.begin(); i != impl->slots_.end(); ++i) {
        slot_function_type& s = *unsafe_any_cast<slot_function_type>(&i->second);
        if (s == f) i->first.disconnect();
      }
    }