- 互斥锁是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。互斥锁目的通过将代码切片成一个一个的临界区域,以达到对临界区域保护作用,使得多线程能够顺序访问。
# 该示例线程 B 一定条件下通过互斥锁控制线程 A 运行,达到线程间通信目的。
import _thread
import utime
lock = _thread.allocate_lock()
count = 1
# 线程 B 函数入口,通过锁控制,防止同时操作操作全局变量count。
def thread_entry_B(id):
global count
while True:
with lock:
print( 'thread {} count {}.'.format(id, count))
count += 1
utime.sleep(1)
# 线程 A 函数入口,通过锁控制,防止同时操作操作全局变量count。
def thread_entry_A(id):
global count
while True:
with lock:
print('thread {} count {}.'.format(id, count))
count += 1
# 创建线程
_thread.start_new_thread(thread_entry_A, ('A',))
_thread.start_new_thread(thread_entry_B, ('B',))