diff options
| author | Alessandro Gatti <a.gatti@frob.it> | 2024-11-18 05:35:48 +0100 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2025-04-22 10:19:20 +1000 |
| commit | 38a3873310c571c32e52edc2a7d4de7c80ff35d5 (patch) | |
| tree | 869f3b4063ef5ca1fcd90d782c5de2a21e12a218 /py | |
| parent | 6025b78d01a883ed24c2f983c1d7b6a4a05d3774 (diff) | |
unix/mpthreadport: Work around lack of thread cancellation on Android.
This commit fixes thread-related compilation issues under Android using
Termux as its runtime environment.
On Android's libc (Bionic) thread cancellation is not implemented, but
the Unix port uses that mechanism to provide asynchronous thread
termination. In this commit there is a workaround for that, by adding a
new signal handler to each newly created thread, whose callback simply
exits the thread. Threads are then sent the new signal rather than
being explicitly cancelled, which in turn trigger the signal handler to
stop the thread execution at the next possible occasion.
This makes the cancellation behaviour differ slightly on Android, as
threads are probably going to linger a little bit more since the method
introduced in this commit is equivalent to setting
PTHREAD_CANCEL_DEFERRED as the thread cancellation type. On the other
hand there are no guarantees of immediate cancellation using
PTHREAD_CANCEL_ASYNCHRONOUS either.
This fixes the pthread-related issues reported in #16259.
Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
Diffstat (limited to 'py')
0 files changed, 0 insertions, 0 deletions
