Question: Please use C + + langague, Please do not motify the code, just add code use binary semaphores instead of mutex locks, Use the following
Please use C langague, Please do not motify the code, just add code use binary semaphores instead of mutex locks, Use the following description: We have five lawyers, each lawyer needs two chopsticks to eat. The code creates threads, one per lawyer, and it has five binary semaphores to represent the chopsticks. use sleep in the code to allows all threads lawyers to grab the chopstick on their left before the one on their right. Then use the sleep in the code to represent the time taken for eating!
#include
#include
#include
#include
#include
#include
#include "pthread.h
using namespace std;
pthreadmutext Chopstickmutex
PTHREADMUTEXINITIALIZER, PTHREADMUTEXINITIALIZER,
PTHREADMUTEXINITIALIZER, PTHREADMUTEXINITIALIZER,
PTHREADMUTEXINITIALIZER;
void doitvoid ;
int main
pthreadt Lawyer;
int i;
cout
#include
#include
#include
#include
#include
#include "pthread.h
using namespace std;
pthreadmutext Chopstickmutex
PTHREADMUTEXINITIALIZER, PTHREADMUTEXINITIALIZER,
PTHREADMUTEXINITIALIZER, PTHREADMUTEXINITIALIZER,
PTHREADMUTEXINITIALIZER;
void doitvoid ;
void doitvoid vptr
Get the Left Chopstick
pthreadmutexlock&Chopstickmutexintptrtvptr;
cout"Lawyer intptrtvptr got chopstick number ;
cout intptrt vptr endl;
sleep;
Get the Right Chopstick
pthreadmutexlock&Chopstickmutexintptrt vptr;
cout"Lawyer intptrtvptr got chopstick number ;
cout intptrtvptr endl;
Eating
cout"Lawyer intptrt vptr is eating with
chopsticks ;
cout intptrt vptr & intptrtvptr
endl;
sleep;
Unlock both left and right Chopsticks
pthreadmutexunlock&Chopstickmutexintptrtvptr;
pthreadmutexunlock&Chopstickmutexintptrtvptr;
returnNULL;
end doit function
#include
#include
#include
#include Define and initialize
#include five Mutexes to
#include
#include "pthread.h
using namespace std;
represent the
chopsticks
pthreadmutext Chopstickmutex
PTHREADMUTEXINITIALIZER, PTHREADMUTEXINITIALIZER,
PTHREADMUTEXINITIALIZER, PTHREADMUTEXINITIALIZER,
PTHREAD MUTEX INITIALIZER;
void doitvoid ;
doit function
declaration
int main
pthreadt Lawyer;
int i;
cout
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
