[gdal-dev] Multithreading issue on pixel-based intensive access (GDAL 2.1.0)

Even Rouault even.rouault at spatialys.com
Sat Jul 30 08:09:33 PDT 2016


Javier,

> I have attached a simple code to reproduce it (Test.cpp). If you need the
> whole solution just ask me, although it is a very simple console test. I
> have also shared with you the zipped datasets through this link:
> https://drive.google.com/file/d/0B-OCl1FjBi0YblRPRGZlQWx4eEE/view?usp=shari
> ng Just place them along with Test.exe file.

I managed to reproduce on Linux after some compilation fixes in your driver 
(constants _UI8_MAX and similar ones aren't recognized. I just commented out 
that code), and changing your Test.cpp to use GDAL thread machinery, since 
std::future/std::async doesn't create threads with gcc (4.8.4) for some reason 
but runs everything sequentially in the main thread.
The issue was that the call to GDALSetCacheMax() prevented the raster block 
mutex from being created. Fixed per https://trac.osgeo.org/gdal/ticket/6611. 
As a workaround you can call GDALGetCacheMax() just before.

> 
> IMPORTANT: Bear in mind that these datasets come in a format still not
> supported officially by GDAL, as I am developing the driver. It is almost
> finished (just a few details pending) and fully working. Find the driver
> attached (Wizard_Driver.7z). By the way, what do we have to do to
> contribute with this new driver for GDAL?

See https://trac.osgeo.org/gdal/wiki/HowToContribute

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the gdal-dev mailing list