11833| 3
|
[uPyCraft IDE] uPyCraft-micropython教程之线程与锁 |
在pyboard和esp32上,都支持线程与锁。我们做一个小实验,演示一下这个功能 在这个实验中我们创建3个线程和一把锁lock,创建顺序为A,B,C。让A,B去争抢这把锁。 实验准备 硬件 1. FireBeetle-ESP32主板 软件 1. uPyCraft-0.22 2. 测试用代码thread.py 预期结果 1. A睡眠 2秒 2. B睡眠 1秒 3. C没有任何限制,最先被执行 4. B醒来,持有所,然乎睡眠5秒 5. A醒来,去获取锁失败,被阻塞,直到B释放这把所 6. B睡眠5秒完成,释放锁 7. A得到执行 本次实验代码如下: [mw_shl_code=python,true]import _thread import time lock=_thread.allocate_lock() def funcA(sec): time.sleep(sec) with lock: print('Running thread A') _thread.exit() def funcB(sec): time.sleep(sec) with lock: print('Running thread B') print('Thread B sleep 5 seconds') time.sleep(5) print('thread B weakup') _thread.exit() def funcC(): print('Running thread C') _thread.exit() _thread.start_new_thread(funcA, (2,)) _thread.start_new_thread(funcB, (1,)) _thread.start_new_thread(funcC, ()) while True: pass [/mw_shl_code] 将代码烧录并运行,执行结果见下图,与预期结果一致 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed