[Proj] libproj4 thread safety

Patrick Mézard pmezard at gmail.com
Wed Feb 23 12:38:26 EST 2005

> > Could I assume that pj_errno is the only libproj4 part which is not
> > threadsafe ?
> It is the only part of libproj4 that is not thread-safe as far as I know.
> The remotesensing.org proj.4 has other issues in the grid shifting
> code for instance.

Great, I pick the good one then :-). Anyway, besides pj_errno, my
first impressions about the code thread-safety was really optimistic.

> > (not that I'd be glad to live with that, but it could be
> > corrected). Is anybody interested in having regular -thread safe-
> > return codes instead (or in plus of the global variable) ? Do you
> > think it can be done with a small amount of work, while leaving the
> > current interface unchanged (apart from adding return values to "void"
> > functions or adding new functions with new prototypes) ?
> I don't particularly think adding error returns to everything is a
> prudent approach.  Instead I would suggest making pj_errno thread
> local as an option.

I second that. It is not the best solution, but for now only 2 lines
of code have to be edited.

> > 2- Are the opaque structures returned by pj_init thread-safe, that is,
> > are they "const" in a C++ sense ? Or should I create one per thread ?
> In theory it should be safe to share them between threads.
> But because PROJ.4 has not been extensively used or reviewed
> for multi-threaded applications I think there is a non-trivial risk that
> there are subtle issues in there that are not immediately obvious.

Ok, I will definitely take a look at the code.

Thank you for your answer.

Patrick Mézard

More information about the Proj mailing list