PageRenderTime 40ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/pypy/module/thread/__init__.py

https://bitbucket.org/pypy/pypy/
Python | 37 lines | 31 code | 5 blank | 1 comment | 1 complexity | a5e4f7d30fb50ba00c9a6891a27dd808 MD5 | raw file
Possible License(s): AGPL-3.0, BSD-3-Clause, Apache-2.0
  1. # Package initialisation
  2. from pypy.interpreter.mixedmodule import MixedModule
  3. class Module(MixedModule):
  4. appleveldefs = {
  5. }
  6. interpleveldefs = {
  7. 'start_new_thread': 'os_thread.start_new_thread',
  8. 'start_new': 'os_thread.start_new_thread', # obsolete syn.
  9. 'get_ident': 'os_thread.get_ident',
  10. 'exit': 'os_thread.exit',
  11. 'exit_thread': 'os_thread.exit', # obsolete synonym
  12. 'interrupt_main': 'os_thread.interrupt_main',
  13. 'stack_size': 'os_thread.stack_size',
  14. '_count': 'os_thread._count',
  15. 'allocate_lock': 'os_lock.allocate_lock',
  16. 'allocate': 'os_lock.allocate_lock', # obsolete synonym
  17. 'LockType': 'os_lock.Lock',
  18. '_local': 'os_local.Local',
  19. 'error': 'space.fromcache(error.Cache).w_error',
  20. }
  21. def __init__(self, space, *args):
  22. "NOT_RPYTHON: patches space.threadlocals to use real threadlocals"
  23. from pypy.module.thread import gil
  24. MixedModule.__init__(self, space, *args)
  25. prev_ec = space.threadlocals.get_ec()
  26. space.threadlocals = gil.GILThreadLocals(space)
  27. space.threadlocals.initialize(space)
  28. if prev_ec is not None:
  29. space.threadlocals._set_ec(prev_ec)
  30. from pypy.module.posix.interp_posix import add_fork_hook
  31. from pypy.module.thread.os_thread import reinit_threads
  32. add_fork_hook('child', reinit_threads)