首页 > 代码库 > python学习笔记三---segmaphore信号量学习
python学习笔记三---segmaphore信号量学习
# *-* coding=gb2312 *-* ''' 信号量semaphore 是一个变量,控制着对公共资源或者临界区的访问。信号量维护着一个计数器,指定可同时访问资源或者进入临界区的线程数。 每次有一个线程获得信号量时,计数器-1。若计数器为0,其他线程就停止访问信号量,直到另一个线程释放信号量。 ''' import threading import random import time class MyThread(threading.Thread): availableTables=['A','B','C','D','E'] def __init__(self,threadName,semaphore): self.interval =random.randrange(1,6) self.semaphore =semaphore threading.Thread.__init__(self,name=threadName) def run(self): self.semaphore.acquire() #acquire a semaphore table = MyThread.availableTables.pop() print "%s entered;seated at table %s." %(self.getName(),table) time.sleep(self.interval) #free a table print "%s exiting,freeing table %s." %(self.getName(),table) MyThread.availableTables.append(table) self.semaphore.release() mySemaphore = threading.Semaphore(len(MyThread.availableTables)) def Test(): threads=[] for i in range(1,10): threads.append(MyThread("thread"+str(i),mySemaphore)) for i in range(len(threads)): threads[i].start() if __name__ == '__main__': Test()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。