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 5 threads, one per lawyer, and it has five binary semaphores to represent the chopsticks. use sleep(1) 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(2) in the code to represent the time taken for eating!
#include
#include
#include
#include
#include
#include
#include "pthread.h"
using namespace std;
pthread_mutex_t Chopstick_mutex [5]=
{PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER,
PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER,
PTHREAD_MUTEX_INITIALIZER};
void *doit(void *);
int main()
{
pthread_t Lawyer[5];
int i;
cout<
#include
#include
#include
#include
#include
#include "pthread.h"
using namespace std;
pthread_mutex_t Chopstick_mutex [5]=
{PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER,
PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER,
PTHREAD_MUTEX_INITIALIZER};
void *doit(void *);
void * doit(void *vptr)
{
//Get the Left Chopstick
pthread_mutex_lock(&Chopstick_mutex[(intptr_t)vptr]);
cout<<"Lawyer "<<(intptr_t)vptr <<" got chopstick number ";
cout <<(intptr_t) vptr << endl;
sleep(1);
//Get the Right Chopstick
pthread_mutex_lock(&Chopstick_mutex[((intptr_t) vptr+1)%5]);
cout<<"Lawyer "<<(intptr_t)vptr <<" got chopstick number ";
cout <<((intptr_t)vptr+1)%5<< endl;
//Eating
cout<<"Lawyer "<<(intptr_t) vptr <<" is eating with
chopsticks ";
cout <<(intptr_t) vptr <<" & "<<(((intptr_t)vptr+1)%5)<<
endl;
sleep(2);
//Unlock both left and right Chopsticks
pthread_mutex_unlock(&Chopstick_mutex[(intptr_t)vptr]);
pthread_mutex_unlock(&Chopstick_mutex[((intptr_t)vptr+1)%5]);
return(NULL);
}//end doit function ```
#include
#include
#include
#include Define and initialize
#include five Mutexes to
#include
#include "pthread.h"
using namespace std;
represent the
chopsticks
pthread_mutex_t Chopstick_mutex [5]=
{PTHREAD_MUTEX__INITIALIZER, PTHREAD_MUTEX_INITIALIZER,
PTHREAD__MUTEX_INITIALIZER, PTHREAD__MUTEX_INITIALIZER,
PTHREAD MUTEX INITIALIZER};
void *doit(void *);
doit function
declaration
int main()
{
pthread_t Lawyer[5];
int i;
cout<

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!