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