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得到执行
本次实验代码如下:
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
将代码烧录并运行,执行结果见下图,与预期结果一致
本帖最后由 xizonghu 于 2018-6-26 16:28 编辑
原来esp8266不能用啊 提示
ImportError: no module named '_thread' xizonghu 发表于 2018-6-26 16:27
提示
ImportError: no module named '_thread'
pyboard和esp32,只有这两个可以用线程
页:
[1]