Advertisement
Guest User

Untitled

a guest
May 6th, 2015
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.43 KB | None | 0 0
  1. from threading import Thread
  2. from threading import Lock
  3. import time
  4. import threading
  5.  
  6. date = time.strftime("%c")
  7. readCounter = 0
  8. readerLock = Lock()
  9. writerLock = Lock()
  10.  
  11. allgo = threading.Condition()
  12.  
  13. class WriterOne(Thread):
  14.     def run(self):
  15.         global date
  16.  
  17.         writerLock.aquire()
  18.  
  19.                 date = time.strftime("%c")
  20.         print ("Writer %s has changed the date to %s \n" %(self.name ,date))
  21.  
  22.         writerLock.release()
  23.  
  24.            
  25.        
  26. class WriterTwo(Thread):
  27.     def run(self):
  28.         global date
  29.  
  30.         writerLock.aquire()
  31.  
  32.                 date = global_date[::-1]
  33.         print ("Writer %s has changed the date to %s \n" %(self.name ,date))
  34.  
  35.         writerLock.release()
  36.  
  37.            
  38. class Reader(Thread):
  39.     def run(self):
  40.         global date
  41.             global readCounter
  42.  
  43.             readerLock.aquire()
  44.             readCounter = readCounter + 1
  45.             if readCounter == 1:
  46.                 writerLock.aquire()
  47.             readerLock.release()
  48.  
  49.             print ("Reader %s has read the date %s \n" % (self.name ,date))
  50.  
  51.             readerLock.aquire()
  52.             readCounter = readCounter - 1
  53.             if readCounter == 0:
  54.                 writerLock.release()
  55.             readerLock.release()
  56.            
  57.  
  58. # create 100 threads and execute each and every one of them.
  59. def startProgram():
  60.     wOne = WriterOne()
  61.     wOne.start()
  62.    
  63.     wTwo = WriterTwo()
  64.     wTwo.start()
  65.    
  66.     readerOne = Reader()
  67.     readerOne.start()
  68.     readerTwo = Reader()
  69.     readerTwo.start()
  70.     readerThree = Reader()
  71.     readerThree.start()
  72.  
  73.    
  74. startProgram()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement