In our GNU version rather puzzling solutions appear like:

  void
  release() // nothrow
  {
    if (__gnu_cxx::__exchange_and_add(&_M_use_count, -1) == 1)
    {
      dispose();
      __glibcxx_mutex_lock(_M_mutex);
      __glibcxx_mutex_unlock(_M_mutex);
      weak_release();
    }
  }

with empty critical regions, and what else. Document that, possibly
mentioning the current weaknesses both from the point of view of
correctness and performance and mentioning alternate solutions.


-- 
           Summary: Document boost_shared_ptr vs concurrency
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Keywords: documentation
          Severity: enhancement
          Priority: P2
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pcarlini at suse dot de


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24347

Reply via email to