• 信号量(英语:semaphore)又称为信号标,是一个同步对象,用于保持在 0 至指定最大值之间的一个计数值。当线程完成一次对该 semaphore 对象的等待时,该计数值减一;当线程完成一次对 semaphore 对象的释放时,计数值加一。
    • 通过信号量的控制,以达到对多线程控制的目的,比如多线程对于资源操作的顺序或者执行有因果关系,必须通过一个线程先进行而后其他线程才能进行处理,可以通过信号量进行控制。
    1. # 该示例线程 B 一定条件下通过信号量控制线程 A 运行,达到线程间通信目的。
    2. import _thread
    3. import utime
    4. semphore = _thread.allocate_semphore(1)
    5. # 线程 B 函数入口,通过信号量控制线程 A 运行。
    6. def thread_entry_B(id):
    7. while True:
    8. print('this is thread {}.'.format(id))
    9. utime.sleep(1)
    10. semphore.release()
    11. # 线程 A 函数入口,等待信号量运行。
    12. def thread_entry_A(id):
    13. while True:
    14. semphore.acquire()
    15. print('this is thread {}.'.format(id))
    16. # 创建线程
    17. _thread.start_new_thread(thread_entry_A, ('A',))
    18. _thread.start_new_thread(thread_entry_B, ('B',))