If the issue is that Thread::safeInc/Dec functions have too coarse
grained of a lock, then they need to be fixed, not just fix one file
that uses them. Either that or we need to replace calls to safeInc/Dec
everywhere with atomic_count and remove these functions. I think the
more stuff we can use from boost to remove non-portable #ifdef _WIN32
#else sections, the better.

** Changed in: linuxdcpp
   Importance: Undecided => Medium

** Changed in: linuxdcpp
       Status: New => Confirmed

-- 
Pointer.h/intrusive_ptr_base class is too heavy-weight
https://bugs.launchpad.net/bugs/617591
You received this bug notification because you are a member of LinuxDC++
Team, which is subscribed to LinuxDC++.

Status in DC++: New
Status in Linux DC++: Confirmed

Bug description:
"Pointer.h/intrusive_ptr_base" class is too heavy-weight (at least on unix), it 
uses pthread mutex for every increment/decrement. And since this mutex is 
static (Thread::mtx), it leads to bad concurrency even for independent 
intrusive pointers.
Patch attached, which uses portable atomic reference counters from boost.
It uses boost::detail::atomic_count from shared_ptr, so it may theoretically 
change in future (since it is in detail), but I doubt it will.



_______________________________________________
Mailing list: https://launchpad.net/~linuxdcpp-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~linuxdcpp-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to