id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc
5690,intrusive_ptr detach method,nn-mail@…,Peter Dimov,"It is very handy.
In some cases like passing between threads or between functions.
(e.g. Boost.ASIO needs this too)
Instead of writing this code:
{{{
#!cpp
intrusive_ptr a(get_a());
intrusive_add_ref(a.get());
call(a.get());
}}}
One could write
{{{
#!cpp
intrusive_ptr a(get_a());
call(a.detach());
}}}
The good thing in the second variation that we don't increase counter, so no 'lock' opcode to the processor. Better performance.
Patch:
{{{
#!cpp
void* detach()
{
T * tmp = px;
px = 0;
return tmp;
}
}}}
Thanx.",Patches,closed,To Be Determined,smart_ptr,Boost 1.47.0,Optimization,fixed,intrusive_ptr,