rendered paste body//code from lecture slidesconst int numReaders = 10;const int numWriters = 5;const int M = 3;semaphore z, turn, mutex1, mutex2, lock;semaphore lag;int readers, writers;void reader(int x){ while(1){ wait(z); wait(lag);//added delay wait(turn); wait(mutex1); readers++; if(readers == 1){ wait(lock); } signal(mutex1); signal(turn); signal(lag);//added delay signal(z); cout <<"Reader # "<< x <<" reading\n"; wait(mutex1); readers--; if(readers==0){ signal(lock); } signal(mutex1); }}void writer(int y){ while(1){ wait(mutex2); writers++; if(writers==1){ wait(turn); } signal(mutex2); wait(lock); cout <<"Writer # "<< y <<" writing\n"; signal(lock); wait(mutex2); writers--; if (writers==0){ signal(turn); } signal(mutex2); }}void main(){ int i; initialsem(z,1); initialsem(mutex1,1); initialsem(mutex2,1); initialsem(lock,1); initialsem(turn,1); initialsem(lag,M); readers = 0; writers = 0; cobegin { for (i = 1; i <=numWriters ; i ++){ reader(i); writer(i); } for( i = numReaders - numWriters +1 ; i <=numReaders ; i++) reader(i); }}