[Proj] threadsafety and PROJ.4 - the projCtx API Update

support.mn at elisanet.fi support.mn at elisanet.fi
Thu Jun 10 23:52:07 PDT 2010


Hello,

Frank, it is ok as long as you keep it downward compatible.
We mostly just call proj-4 from within a single thread so
we don't usually have any problems.

Regards: Janne

------------------------------------

Frank Warmerdam [warmerdam at pobox.com] kirjoitti: 
> Folks,
> 
> For a project I'm involved in (a spatial capability for Ingres), it is
> desirable to make PROJ.4 threadsafe.  In the past some work has been
> done to protect some parts of PROJ.4 with mutexes (ie. grid loading
> code).  However, at least one major hole remained in the thread safety
> of the library, and that was the use of "pj_errno" as a global error
> variable.  It is not only used to report to the application, but also
> for various internal checks.
> 
> I have struggled for a while with how to address this, and I have decided
> to implement a sort of thread context structure in PROJ.4 called projCtx.
> It includes a "last error" variable which is intended to replace use of
> pj_errno within the library and for applications that wish to support
> multi-threading.
> 
> I have written up a page on this, and just committed preliminary
> implementation of this structure.
> 
>    http://trac.osgeo.org/proj/wiki/ThreadSafety
>    http://trac.osgeo.org/proj/changeset/1854
> 
> The short story is that applications which don't care about thread safety
> can continue to call the API as they do now.  Those that do care, can create
> a projCtx with pj_ctx_alloc(), and then call pj_init_ctx() or
> pj_init_plus_ctx() with that context.  These functions push a pointer to
> the context into the projPJ structure so it is not necessary to be aware
> of the context in other parts of the high level API.
> 
> I must confess I've just gone ahead and done this without seeking
> permission, but if there are strong reasons not to use this approach
> I'd consider backing it out in favor of another solution.   So I'm seeking
> feedback on the approach and if anyone sees other problems.
> 
> Best regards,
> -- 
> ---------------------------------------+--------------------------------------
> I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
> light and sound - activate the windows | http://pobox.com/~warmerdam
> and watch the world go round - Rush    | Geospatial Programmer for Rent
> 
> _______________________________________________
> Proj mailing list
> Proj at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/proj
> 




More information about the Proj mailing list