Ian Appru wrote:
The boost library's shared_ptr project requires a conditional increment like

inline int atomic_conditional_increment( int * pw )
{
    // if( *pw != 0 ) ++*pw;
    // return *pw;
}

I'd like to extend shared_ptr to support sparc v8+ processors using the sun 
studio compiler (v5.7 and above) using an atomic operation - the current 
implementation uses pthreads mutexes and so doesn't scale that well.

While atomic increment/decrements (using cas) are suffiently well documented 
for me to be pretty confident in my implementation I would apreciate any input 
for an atomic conditional increment.
This message posted from opensolaris.org
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

man atomic_inc_32

<assuming your code is correct as written>

inline  int atomic_conditional_increment(int * pw )
{
        if (*pw)
                return (atomic_inc_32(pw));
        else
                return (0);
}

- Bart

--
Bart Smaalders                  Solaris Kernel Performance
[EMAIL PROTECTED]               http://blogs.sun.com/barts
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to