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>
This commit is contained in:
parent
b6b39bff47
commit
4cdcbdb753
@ -25,7 +25,12 @@ n_finished = 0
|
||||
|
||||
# spawn threads
|
||||
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
|
||||
while n_finished < n_thread:
|
||||
|
@ -13,8 +13,13 @@ def thread_entry():
|
||||
_thread.exit()
|
||||
|
||||
|
||||
_thread.start_new_thread(thread_entry, ())
|
||||
_thread.start_new_thread(thread_entry, ())
|
||||
for i in range(2):
|
||||
while True:
|
||||
try:
|
||||
_thread.start_new_thread(thread_entry, ())
|
||||
break
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
# wait for threads to finish
|
||||
time.sleep(1)
|
||||
|
@ -13,8 +13,13 @@ def thread_entry():
|
||||
raise SystemExit
|
||||
|
||||
|
||||
_thread.start_new_thread(thread_entry, ())
|
||||
_thread.start_new_thread(thread_entry, ())
|
||||
for i in range(2):
|
||||
while True:
|
||||
try:
|
||||
_thread.start_new_thread(thread_entry, ())
|
||||
break
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
# wait for threads to finish
|
||||
time.sleep(1)
|
||||
|
@ -41,7 +41,12 @@ n_finished = 0
|
||||
# set stack size and spawn a few threads
|
||||
_thread.stack_size(sz)
|
||||
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)
|
||||
_thread.stack_size()
|
||||
|
@ -18,8 +18,13 @@ def thread_entry(n):
|
||||
foo()
|
||||
|
||||
|
||||
_thread.start_new_thread(thread_entry, (10,))
|
||||
_thread.start_new_thread(thread_entry, (20,))
|
||||
for i in range(2):
|
||||
while True:
|
||||
try:
|
||||
_thread.start_new_thread(thread_entry, ((i + 1) * 10,))
|
||||
break
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
# wait for threads to finish
|
||||
time.sleep(1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user