kopia lustrzana https://github.com/micropython/micropython
tests/thread: Make exc1,exit1,exit2,stacksize1,start1 tests run on rp2.
The RP2040 has 2 cores and supports running at most 2 Python threads (the main one plus another), and will raise OSError if a thread cannot be created because core1 is already in use. This commit adjusts some thread tests to be robust against such OSError's. These tests now pass on rp2 boards. Signed-off-by: Damien George <damien@micropython.org>pull/7238/head
rodzic
b6b39bff47
commit
4cdcbdb753
|
@ -25,7 +25,12 @@ n_finished = 0
|
||||||
|
|
||||||
# spawn threads
|
# spawn threads
|
||||||
for i in range(n_thread):
|
for i in range(n_thread):
|
||||||
_thread.start_new_thread(thread_entry, ())
|
while True:
|
||||||
|
try:
|
||||||
|
_thread.start_new_thread(thread_entry, ())
|
||||||
|
break
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
# busy wait for threads to finish
|
# busy wait for threads to finish
|
||||||
while n_finished < n_thread:
|
while n_finished < n_thread:
|
||||||
|
|
|
@ -13,8 +13,13 @@ def thread_entry():
|
||||||
_thread.exit()
|
_thread.exit()
|
||||||
|
|
||||||
|
|
||||||
_thread.start_new_thread(thread_entry, ())
|
for i in range(2):
|
||||||
_thread.start_new_thread(thread_entry, ())
|
while True:
|
||||||
|
try:
|
||||||
|
_thread.start_new_thread(thread_entry, ())
|
||||||
|
break
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
# wait for threads to finish
|
# wait for threads to finish
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
|
@ -13,8 +13,13 @@ def thread_entry():
|
||||||
raise SystemExit
|
raise SystemExit
|
||||||
|
|
||||||
|
|
||||||
_thread.start_new_thread(thread_entry, ())
|
for i in range(2):
|
||||||
_thread.start_new_thread(thread_entry, ())
|
while True:
|
||||||
|
try:
|
||||||
|
_thread.start_new_thread(thread_entry, ())
|
||||||
|
break
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
# wait for threads to finish
|
# wait for threads to finish
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
|
@ -41,7 +41,12 @@ n_finished = 0
|
||||||
# set stack size and spawn a few threads
|
# set stack size and spawn a few threads
|
||||||
_thread.stack_size(sz)
|
_thread.stack_size(sz)
|
||||||
for i in range(n_thread):
|
for i in range(n_thread):
|
||||||
_thread.start_new_thread(thread_entry, ())
|
while True:
|
||||||
|
try:
|
||||||
|
_thread.start_new_thread(thread_entry, ())
|
||||||
|
break
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
# reset stack size to default (for subsequent scripts on baremetal)
|
# reset stack size to default (for subsequent scripts on baremetal)
|
||||||
_thread.stack_size()
|
_thread.stack_size()
|
||||||
|
|
|
@ -18,8 +18,13 @@ def thread_entry(n):
|
||||||
foo()
|
foo()
|
||||||
|
|
||||||
|
|
||||||
_thread.start_new_thread(thread_entry, (10,))
|
for i in range(2):
|
||||||
_thread.start_new_thread(thread_entry, (20,))
|
while True:
|
||||||
|
try:
|
||||||
|
_thread.start_new_thread(thread_entry, ((i + 1) * 10,))
|
||||||
|
break
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
# wait for threads to finish
|
# wait for threads to finish
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
Ładowanie…
Reference in New Issue