NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hi Stuart: Underneath a Variable/NetcdfFile is (usually) a java.io.RandomAccessFile object, which is not thread-safe, because it keeps the state of the file position. So even if all you want to do is read data in multiple threads, you need to synchronize, typically on the NetcdFile object. Alternatively, open a new NetcdfFile for each thread. The Threads Data Server (TDS) uses a cache of open NetcdfFile files by using the NetcdfFile.acquire() method, which allows stateless handling of data requests minimizing file opening and closing.. Stuart Maclean wrote: > Is ucar.nc2.Variable intended to be thread safe, at least for > Variables in 'read' mode?? If I do this: > > NetcdfFile nc = NetcdfFile.open( "foo.nc" ); > Variable v = nc.findVariable( "v" ); > > then can I do calls like > > Array a = v.read( "section Spec" ); > > from many threads concurrently, with different sections obviously. > > Or is there state in a Variable that precludes this? I know I could > trawl the source code but that is slow. > > Apologies if this is a FAQ No, but I need to start a FAQ and put this into it! John
netcdf-java
archives: