mirror of
https://github.com/licsber/micropython.git
synced 2024-09-20 09:00:23 +08:00
py/modthread: Raise RuntimeError in release() if lock is not acquired.
This commit is contained in:
parent
a47b871131
commit
e374cfff80
@ -84,7 +84,9 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(thread_lock_acquire_obj, 1, 3, thread
|
|||||||
|
|
||||||
STATIC mp_obj_t thread_lock_release(mp_obj_t self_in) {
|
STATIC mp_obj_t thread_lock_release(mp_obj_t self_in) {
|
||||||
mp_obj_thread_lock_t *self = MP_OBJ_TO_PTR(self_in);
|
mp_obj_thread_lock_t *self = MP_OBJ_TO_PTR(self_in);
|
||||||
// TODO check if already unlocked
|
if (!self->locked) {
|
||||||
|
mp_raise_msg(&mp_type_RuntimeError, NULL);
|
||||||
|
}
|
||||||
self->locked = false;
|
self->locked = false;
|
||||||
MP_THREAD_GIL_EXIT();
|
MP_THREAD_GIL_EXIT();
|
||||||
mp_thread_mutex_unlock(&self->mutex);
|
mp_thread_mutex_unlock(&self->mutex);
|
||||||
|
@ -38,3 +38,9 @@ try:
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
print('KeyError')
|
print('KeyError')
|
||||||
print(lock.locked())
|
print(lock.locked())
|
||||||
|
|
||||||
|
# test that we can't release an unlocked lock
|
||||||
|
try:
|
||||||
|
lock.release()
|
||||||
|
except RuntimeError:
|
||||||
|
print('RuntimeError')
|
||||||
|
Loading…
Reference in New Issue
Block a user