信号量的信号锁也根据条件进行。他与条件锁和事件锁之间的区别如下:
条件锁定:任何“等待”状态中的一个线程可以一次释放;
事件锁:一次“等待”状态的一个线程;
信号数量锁定:通过规定,“锁定”状态中某个特定的释放。
threading.semaphore()返回信号锁定对象lockobject.acquire(blocking = true,timeout = 1)锁定。当锁定代码块执行线程时,将不允许切换到其他线程。时间为1秒lockobject.release()解锁。当没有锁定代码块的情况下执行线程时,系统将允许系统根据策略切换到其他线程。
示例01:
结果:
示例02:
结果;
像同步锁一样,threading.semaphore()对象也实现了*enter*()和exit **()方法,因此我们还可以使用with with语句来对同步锁(例如同步锁)进行上下文管理表格。解锁操作。
示例代码如下:
结果:
