Author: Armin Rigo <[email protected]>
Branch: stm-thread-2
Changeset: r61325:92cea4991f95
Date: 2013-02-16 16:14 +0100
http://bitbucket.org/pypy/pypy/changeset/92cea4991f95/
Log: Use __pypy__.thread.signals_enabled here.
diff --git a/lib_pypy/transaction.py b/lib_pypy/transaction.py
--- a/lib_pypy/transaction.py
+++ b/lib_pypy/transaction.py
@@ -29,6 +29,17 @@
_atomic_global_lock.release()
atomic = _Atomic()
+try:
+ from __pypy__.thread import signals_enabled
+except ImportError:
+ # Not a PyPy at all.
+ class _SignalsEnabled(object):
+ def __enter__(self):
+ pass
+ def __exit__(self, *args):
+ pass
+ signals_enabled = _SignalsEnabled()
+
def set_num_threads(num):
"""Set the number of threads to use."""
@@ -114,11 +125,7 @@
thread.start_new_thread(self._run_thread, ())
# now wait. When we manage to acquire the following lock, then
# we are finished.
- try:
- acquire = self.lock_if_released_then_finished.acquire_interruptible
- except AttributeError: # not on pypy-stm
- acquire = self.lock_if_released_then_finished.acquire
- acquire()
+ self.lock_if_released_then_finished.acquire()
def teardown(self):
self.in_transaction = False
@@ -203,13 +210,14 @@
def _do_it((f, args, kwds), got_exception):
# this is a staticmethod in order to make sure that we don't
# accidentally use 'self' in the atomic block.
- with atomic:
- if got_exception:
- return # return early if already an exception to reraise
- try:
- f(*args, **kwds)
- except:
- got_exception[:] = sys.exc_info()
+ try:
+ with signals_enabled:
+ with atomic:
+ if got_exception:
+ return # return early if already an exc. to reraise
+ f(*args, **kwds)
+ except:
+ got_exception[:] = sys.exc_info()
_thread_pool = _ThreadPool()
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit