I do ot how the code working ? would yu explain it ?  from threading import Thread, Lock from datetime import datetime import time # 2 shared_resource = "" lock = Lock() # 1 modify_readers = Lock(); n_readers = 0; # 3 fifo_lock = Lock() def wait(): time.sleep(2) ###

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

I do ot how the code working ? would yu explain it ? 

from threading import Thread, Lock
from datetime import datetime
import time

# 2
shared_resource = ""
lock = Lock()

# 1
modify_readers = Lock();
n_readers = 0;

# 3
fifo_lock = Lock()

def wait():
time.sleep(2)
###

def acquire_reader():
global n_readers, modify_readers, fifo_lock
fifo_lock.acquire()
modify_readers.acquire()
fifo_lock.release()

n_readers += 1;
if(n_readers == 1): lock.acquire()

modify_readers.release()
###

def release_reader():
global n_readers, modify_readers, fifo_lock
modify_readers.acquire()

n_readers -= 1;
if(n_readers == 0): lock.release()

modify_readers.release()
###

def write_normal():
while True:
global shared_resource, fifo_lock

fifo_lock.acquire()
lock.acquire()
fifo_lock.release()

print("Writing normal")
shared_resource = datetime.now()

lock.release()
wait()
###

def write_reverse():
while True:
global shared_resource, fifo_lock

fifo_lock.acquire()
lock.acquire()
fifo_lock.release()

print("Writing reverse")
shared_resource = str(datetime.now() )[::-1]

lock.release()
wait()
###

def read():
while True:
global shared_resource
acquire_reader();

#print("Reading")
print(shared_resource);

release_reader();
wait()
###

w1 = Thread(target=write_normal)
w2 = Thread(target=write_reverse)

r1 = Thread(target=read)
r2 = Thread(target=read)
r3 = Thread(target=read)

w1.start();
w2.start();
#print("Writers running.")

r1.start();
r2.start();
r3.start();
#print("Readers running.")

Expert Solution
steps

Step by step

Solved in 4 steps with 2 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY