The particular instance of caching for performance might be able to be removed after
https://bitbucket.org/petsc/petsc-dev/changeset/4c3566b6cf576d089811005e78b5a1ad26db2853 since it removed several lookups and indirections. The caching was always an ugly beast due to the ABA problem. On Thu, Nov 15, 2012 at 7:56 PM, Barry Smith <bsmith at mcs.anl.gov> wrote: > > PetscInitialize() and PetscFinalize() are reentrant. These means that > one can call them several times in the same program (one must call > MPI_Int() and MPI_Finalize() explicitly outside of these calls. > > This means that PetscFinalize() should leave the data in the code in an > equivalent state as before the first PetscInitialize() is called. > > I just spent a couple hours banging my head against the wall due to > two static variables in a function placed there on the assumption that > PETSc was not reentrant. > > Please use static inside PETSc functions very carefully (if ever) and > make sure they don't destroy the reentrancy. > > Thanks > > Barry > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20121116/f0d7bfa6/attachment.html>
