docstr: Open a file from different threads.
  
  Regression test for issue #986
docstr_tok: ["Open","a","file","from","different","threads",".","Regression","test","for","issue","#","986"]
code: def test_multiopen(self):
      """
      Open a file from different threads.
  
      Regression test for issue #986
      """
  
      def func(delay):
          try:
              with rio.open("tests/data/RGB.byte.tif"):
                  time.sleep(delay)
          except Exception as err:
              global exceptions
              exceptions.append(err)
  
      global exceptions
      exceptions = []
  
      t1 = Thread(target=func, args=(0.1,))
      t2 = Thread(target=func, args=(0,))
  
      with rio.Env():
          t1.start()
          t2.start()  # potential error if Env manages globals unsafely
  
          t1.join()
          t2.join()
  
      assert not exceptions
  
file_path: rasterio/tests/test_threading.py
imports: from threading import Thread
  import time
  import unittest
  import rasterio
  from rasterio.env import get_gdal_config
label_desc: Use image node_id 1 for calling the TestThreading obj's underlying member method code with example usage: obj.test_multiopen() without return types