Laurentiu,
GDAL 3.6 added support for multi-threaded reading using PRead, but I couldn't spot ReadBlock using the same code path.
If you read one single block at a time, the multi-threaded optimization cannot kick in, since the elementary decoding unit is a block. You must call RasterIO() with a window intersecting several block.
(*) I think these can also be implemented at VSI level by wrapping a file handle and turning Seek + Read into a PRead (when supported), even for drivers that don't explicitly support PRead.
The multi-threaded optimization also works for VSI file systems not supported PRead(), but doing what you mention above: doing Seek+Read under a lock. This is of course less efficient.
Even -- http://www.spatialys.com My software is free, but my time generally not.
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/gdal-dev