Hi,
I am using netcdf in a threaded C program. I found that when I use more 
than 1 thread an assert in POSIX I/O routine fails
   posixio.c:376: px_rel: Assertion `pxp->bf_offset <= offset && offset
   < pxp->bf_offset + (off_t) pxp->bf_extent' failed.
this lead me to the FAQ which explains that nstcdf is not thread safe. I 
have a few questions below about what is the best approach to use netcdf 
in a threaded program.
Here are some details about my use case. the files are in classic format 
(not hdf5). The access to the files is read only. Each file contains a 
number of time steps. in my code time steps are assigned to threads for 
processing in parallel. each thread may read and process a number of 
variables from a given time step before moving on to another time step. 
the threads are sharing the file handles, to avoid having to re-open the 
same file multiple times.
Do I need to lock every netcdf call ?
when a thread will read a list of variables in a loop, is it better to 
have the lock outside the  loop, or just around the read call ?
Should file handles be local to a thread, or is sharing them more 
efficient ?
Thanks
Burlen