Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from threading import Thread
- from threading import Lock
- import time
- import threading
- date = time.strftime("%c")
- readCounter = 0
- readerLock = Lock()
- writerLock = Lock()
- allgo = threading.Condition()
- class WriterOne(Thread):
- def run(self):
- global date
- writerLock.aquire()
- date = time.strftime("%c")
- print ("Writer %s has changed the date to %s \n" %(self.name ,date))
- writerLock.release()
- class WriterTwo(Thread):
- def run(self):
- global date
- writerLock.aquire()
- date = global_date[::-1]
- print ("Writer %s has changed the date to %s \n" %(self.name ,date))
- writerLock.release()
- class Reader(Thread):
- def run(self):
- global date
- global readCounter
- readerLock.aquire()
- readCounter = readCounter + 1
- if readCounter == 1:
- writerLock.aquire()
- readerLock.release()
- print ("Reader %s has read the date %s \n" % (self.name ,date))
- readerLock.aquire()
- readCounter = readCounter - 1
- if readCounter == 0:
- writerLock.release()
- readerLock.release()
- # create 100 threads and execute each and every one of them.
- def startProgram():
- wOne = WriterOne()
- wOne.start()
- wTwo = WriterTwo()
- wTwo.start()
- readerOne = Reader()
- readerOne.start()
- readerTwo = Reader()
- readerTwo.start()
- readerThree = Reader()
- readerThree.start()
- startProgram()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement