| # -*- coding: utf-8 -*- |
| |
| import threading |
| |
| from pybind11_tests import thread as m |
| |
| |
| class Thread(threading.Thread): |
| def __init__(self, fn): |
| super(Thread, self).__init__() |
| self.fn = fn |
| self.e = None |
| |
| def run(self): |
| try: |
| for i in range(10): |
| self.fn(i, i) |
| except Exception as e: |
| self.e = e |
| |
| def join(self): |
| super(Thread, self).join() |
| if self.e: |
| raise self.e |
| |
| |
| def test_implicit_conversion(): |
| a = Thread(m.test) |
| b = Thread(m.test) |
| c = Thread(m.test) |
| for x in [a, b, c]: |
| x.start() |
| for x in [c, b, a]: |
| x.join() |
| |
| |
| def test_implicit_conversion_no_gil(): |
| a = Thread(m.test_no_gil) |
| b = Thread(m.test_no_gil) |
| c = Thread(m.test_no_gil) |
| for x in [a, b, c]: |
| x.start() |
| for x in [c, b, a]: |
| x.join() |