aboutsummaryrefslogtreecommitdiff
path: root/tests/test_thread.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_thread.py')
-rw-r--r--tests/test_thread.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/test_thread.py b/tests/test_thread.py
new file mode 100644
index 00000000..e89991f9
--- /dev/null
+++ b/tests/test_thread.py
@@ -0,0 +1,42 @@
+import threading
+
+from pybind11_tests import thread as m
+
+
+class Thread(threading.Thread):
+ def __init__(self, fn):
+ super().__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().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()