diff options
| author | David Lechner <david@pybricks.com> | 2023-08-03 15:20:30 -0500 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2023-09-03 18:49:18 +1000 |
| commit | ffb43b2dd37f10f48612d369b5cad9731c2a0597 (patch) | |
| tree | cecc29542135b957063038985bdb466e3b05ddae /tests | |
| parent | c0d4c604e6a140c0f2967e1b43fd94d0b029c73f (diff) | |
py/modthread: Return thread id from start_new_thread().
In CPython, `_thread.start_new_thread()` returns an ID that is the same ID
that is returned by `_thread.get_ident()`. The current MicroPython
implementation of `_thread.start_new_thread()` always returns `None`.
This modifies the required functions to return a value. The native thread
id is returned since this can be used for interop with other functions, for
example, `pthread_kill()` on *nix. `_thread.get_ident()` is also modified
to return the native thread id so that the values match and avoids the need
for a separate `native_id` attribute.
Fixes issue #12153.
Signed-off-by: David Lechner <david@pybricks.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/thread/thread_ident1.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/tests/thread/thread_ident1.py b/tests/thread/thread_ident1.py index 390193acc..8e106cd31 100644 --- a/tests/thread/thread_ident1.py +++ b/tests/thread/thread_ident1.py @@ -5,7 +5,11 @@ import _thread +tid = None + + def thread_entry(): + global tid tid = _thread.get_ident() print("thread", type(tid) == int, tid != 0, tid != tid_main) global finished @@ -16,8 +20,9 @@ tid_main = _thread.get_ident() print("main", type(tid_main) == int, tid_main != 0) finished = False -_thread.start_new_thread(thread_entry, ()) +new_tid = _thread.start_new_thread(thread_entry, ()) while not finished: pass -print("done") + +print("done", type(new_tid) == int, new_tid == tid) |
