data = [] lock = thread.allocate() def getItem(): item = None if lock.acquire(): if 0 != len(data) : item = data.pop() lock.release() return item
以上代码显示,只有当任务队列里有数据的时候才会释放锁,否则,不释放,将引发其他相关的消费线程锁死。