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