[geos-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...


  |   __/  |    Delivering high quality PostGIS 2.0 !
  |  / 2.0 |    http://strk.keybit.net - http://vizzuality.com

More information about the geos-devel mailing list