Index: third_party/twisted_8_1/twisted/python/threadable.py |
diff --git a/third_party/twisted_8_1/twisted/python/threadable.py b/third_party/twisted_8_1/twisted/python/threadable.py |
deleted file mode 100644 |
index 93303204eacb6a9d978567b615297aaf3b97a982..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/python/threadable.py |
+++ /dev/null |
@@ -1,120 +0,0 @@ |
-# -*- test-case-name: twisted.python.threadable -*- |
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
- |
-""" |
-A module that will allow your program to be multi-threaded, |
-micro-threaded, and single-threaded. Currently microthreads are |
-unimplemented. The idea is to abstract away some commonly used |
-functionality so that I don't have to special-case it in all programs. |
-""" |
- |
-import warnings |
- |
-from twisted.python import hook |
- |
-class DummyLock(object): |
- """ |
- Hack to allow locks to be unpickled on an unthreaded system. |
- """ |
- |
- def __reduce__(self): |
- return (unpickle_lock, ()) |
- |
-def unpickle_lock(): |
- if threadingmodule is not None: |
- return XLock() |
- else: |
- return DummyLock() |
-unpickle_lock.__safe_for_unpickling__ = True |
- |
-def _synchPre(self, *a, **b): |
- if '_threadable_lock' not in self.__dict__: |
- _synchLockCreator.acquire() |
- if '_threadable_lock' not in self.__dict__: |
- self.__dict__['_threadable_lock'] = XLock() |
- _synchLockCreator.release() |
- self._threadable_lock.acquire() |
- |
-def _synchPost(self, *a, **b): |
- self._threadable_lock.release() |
- |
-def synchronize(*klasses): |
- """Make all methods listed in each class' synchronized attribute synchronized. |
- |
- The synchronized attribute should be a list of strings, consisting of the |
- names of methods that must be synchronized. If we are running in threaded |
- mode these methods will be wrapped with a lock. |
- """ |
- if threadmodule is not None: |
- for klass in klasses: |
- for methodName in klass.synchronized: |
- hook.addPre(klass, methodName, _synchPre) |
- hook.addPost(klass, methodName, _synchPost) |
- |
-def init(with_threads=1): |
- """Initialize threading. |
- |
- Don't bother calling this. If it needs to happen, it will happen. |
- """ |
- global threaded, _synchLockCreator, XLock |
- |
- if with_threads: |
- if not threaded: |
- if threadmodule is not None: |
- threaded = True |
- |
- class XLock(threadingmodule._RLock, object): |
- def __reduce__(self): |
- return (unpickle_lock, ()) |
- |
- _synchLockCreator = XLock() |
- else: |
- raise RuntimeError("Cannot initialize threading, platform lacks thread support") |
- else: |
- if threaded: |
- raise RuntimeError("Cannot uninitialize threads") |
- else: |
- pass |
- |
-_dummyID = object() |
-def getThreadID(): |
- if threadmodule is None: |
- return _dummyID |
- return threadmodule.get_ident() |
- |
- |
-def isInIOThread(): |
- """Are we in the thread responsable for I/O requests (the event loop)? |
- """ |
- return ioThread == getThreadID() |
- |
- |
-def registerAsIOThread(): |
- """Mark the current thread as responsable for I/O requests. |
- """ |
- global ioThread |
- ioThread = getThreadID() |
- |
- |
-ioThread = None |
-threaded = False |
- |
-def whenThreaded(cb): |
- warnings.warn("threadable.whenThreaded is deprecated. " |
- "Use application-level logic instead.", |
- DeprecationWarning, stacklevel=2) |
- cb() |
- |
-try: |
- import thread as threadmodule |
- import threading as threadingmodule |
-except ImportError: |
- threadmodule = None |
- threadingmodule = None |
-else: |
- init(True) |
- |
-__all__ = ['isInIOThread', 'registerAsIOThread', 'getThreadID', 'XLock', |
- 'whenThreaded'] |