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