diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2014-04-23 18:12:53 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2014-04-23 22:41:21 -0400 |
commit | 0acff566213fdddbc8f4561887aced121f82dc26 (patch) | |
tree | 97620a5ef72efc783d35817e4349a9f8a1d8cff8 /libdimension-python | |
parent | 3ce3ed46f5cd95bfca4f9303c93859fac54476bb (diff) | |
download | dimension-0acff566213fdddbc8f4561887aced121f82dc26.tar.xz |
future: Add a race-free way to examine a partial computation.
This allows safe OpenGL previews, for example. dmnsn_future* learned
the dmnsn_future_{pause,resume}() functions which cause all worker
threads to block. render.test now survives Helgrind with no errors.
Diffstat (limited to 'libdimension-python')
-rw-r--r-- | libdimension-python/dimension.pxd | 4 | ||||
-rw-r--r-- | libdimension-python/dimension.pyx | 8 |
2 files changed, 10 insertions, 2 deletions
diff --git a/libdimension-python/dimension.pxd b/libdimension-python/dimension.pxd index 3f89e71..4df0786 100644 --- a/libdimension-python/dimension.pxd +++ b/libdimension-python/dimension.pxd @@ -1,5 +1,5 @@ ######################################################################### -# Copyright (C) 2011 Tavian Barnes <tavianator@tavianator.com> # +# Copyright (C) 2011-2014 Tavian Barnes <tavianator@tavianator.com> # # # # This file is part of The Dimension Python Module. # # # @@ -73,6 +73,8 @@ cdef extern from "../libdimension/dimension.h": void dmnsn_future_cancel(dmnsn_future *future) double dmnsn_future_progress(dmnsn_future *future) void dmnsn_future_wait(dmnsn_future *future, double progress) nogil + void dmnsn_future_pause(dmnsn_future *future) nogil + void dmnsn_future_resume(dmnsn_future *future) ########## # Timers # diff --git a/libdimension-python/dimension.pyx b/libdimension-python/dimension.pyx index a50f247..7b6619f 100644 --- a/libdimension-python/dimension.pyx +++ b/libdimension-python/dimension.pyx @@ -1,5 +1,5 @@ ######################################################################### -# Copyright (C) 2011-2012 Tavian Barnes <tavianator@tavianator.com> # +# Copyright (C) 2011-2014 Tavian Barnes <tavianator@tavianator.com> # # # # This file is part of The Dimension Python Module. # # # @@ -91,6 +91,12 @@ cdef class Future: with nogil: dmnsn_future_wait(self._future, progress) + def pause(self): + with nogil: + dmnsn_future_pause(self._future) + def resume(self): + dmnsn_future_resume(self._future) + # Let Futures be used as context managers def __enter__(self): return self |