Re: [netcdf-java] Variable object thread safe?

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


  • 2008 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: