mirror of
https://github.com/micropython/micropython.git
synced 2026-01-08 05:00:26 +01:00
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>
This commit is contained in:
committed by
Damien George
parent
c0d4c604e6
commit
ffb43b2dd3
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user