Murali,

please note that OBJ_NEW is the macro that allocates (e.g. malloc) and initializes an object

among other things, initialization sets the refcount to 1.

the OBJ_RETAIN and OBJ_RELEASE macro can then be used in order to increment and decrement the refcount.

when the refcount drops to 0, the object is destroyed and freed.


the OBJ_CONSTRUCT and OBJ_DESTRUCT macros should only be used to initialize/finalize objects

that have already been allocated.


bottom line, in order to free an object allocated with OBJ_NEW, simply OBJ_RELEASE it,

and do *not* try OBJ_DESTRUCT it


Cheers,

Gilles

On 10/11/2016 6:24 AM, Emani, Murali wrote:
Thanks for the clarification Ralph and George.

—
Murali


From: devel <devel-boun...@lists.open-mpi.org <mailto:devel-boun...@lists.open-mpi.org>> on behalf of George Bosilca <bosi...@icl.utk.edu <mailto:bosi...@icl.utk.edu>> Reply-To: Open MPI Developers <devel@lists.open-mpi.org <mailto:devel@lists.open-mpi.org>>
Date: Monday, October 10, 2016 at 2:18 PM
To: Open MPI Developers <devel@lists.open-mpi.org <mailto:devel@lists.open-mpi.org>>
Subject: Re: [OMPI devel] use of OBJ_NEW and related calls

These macros are defined in opal/class/opal_object.h. We are using them all over the OMPI code base, including OPAL, ORTE, OSHMEM and OMPI. These calls are indeed somewhat similar to an OO language, the intent was to have a thread-safe way to refcount objects to keep them around for as long as they are necessary.

  George.


On Mon, Oct 10, 2016 at 4:18 PM, Emani, Murali <ema...@llnl.gov <mailto:ema...@llnl.gov>> wrote:

    Hi,

    Could someone help me in understanding where the functions
    OBJ_NEW/ OBJ_CONSTRUCT/ OBJ_DESTRUCT are defined in the source
    code. Are these specific to OpenMPI code base?
    Is the assumption correct that these calls are wrappers to create
    new objects, initialize and destroy, similar to any object
    oriented language.

    —
    Murali


    _______________________________________________
    devel mailing list
    devel@lists.open-mpi.org <mailto:devel@lists.open-mpi.org>
    https://rfd.newmexicoconsortium.org/mailman/listinfo/devel
    <https://rfd.newmexicoconsortium.org/mailman/listinfo/devel>




_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/devel

_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/devel

Reply via email to