首页 > 编程语言 > 详细

python学习笔记三---segmaphore信号量学习

时间:2014-06-24 17:49:24      阅读:604      评论:0      收藏:0      [点我收藏+]
# *-* 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()

python学习笔记三---segmaphore信号量学习,布布扣,bubuko.com

python学习笔记三---segmaphore信号量学习

原文:http://blog.csdn.net/smartfox80/article/details/33397987

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!