[postgis-devel] New strategy for GEOS interruptability
Sandro Santilli
strk at keybit.net
Fri May 25 05:42:23 PDT 2012
After the bloody fight with custom memory allocators I decided
to change strategy and approached explicit support in GEOS for
interruption requests and a signal handler to trigger it.
It proves effective and much cleaner so far.
I've been testing it by installing an handler for SIGINT straight
into GEOS itself, but I understand that's not a clean way to do
it so before committing I will port the code into PostGIS itself.
On the GEOS side this is another C-API extension, whereas we'll
have GEOS_requestInterrupt() and GEOS_cancelInterrupt() functions
usable from the outside. The functions will set or clear a flag
that will be explicitly checked within the GEOS C++ codebase at
places which are known to be possibly iterated significatively.
Presence of the flag would result in an exception being thrown,
which should supposedly give GEOS all it takes to perform any
appropriate cleanups.
If you want to test the handler-in-geos implementation (which
has the advantage of working with _any_ PostGIS version) you
can do so using this experimental branch:
git pull git://github.com/strk/libgeos.git svn-trunk-interruptable
The handler is installed on first call to initGEOS time.
I actually wonder if I should just keep the handler in there...
--strk;
,------o-.
| __/ | Delivering high quality PostGIS 2.0 !
| / 2.0 | http://strk.keybit.net - http://vizzuality.com
`-o------'
More information about the postgis-devel
mailing list