+1 vote
106 views
In certain countries, when two people meet they bow to each other. The protocol is that one of them bows first and stays down until the other one bows. If they bow at the same time, they will both stay bowed forever. Write a program that does not deadlock.
| 106 views

I think the following program would suffice:

bowing = [false, false]

bowing[i] = true;

if(bowing[j]==true) bowing[i] = false;

by (23 points)
0
If both of them execute bowing[i] = true,  then each one will be waiting for the other to finish bowing. I think you should lock it with a mutex.
0
That is the need of the question that two remain bowing if both bowed at the same time..
0

I thought that "If they both bow at the same time, they will both stay bowed forever" was the deadlock condition which had to be avoided. How are you avoiding deadlock through your code and what is the deadlock condition? @GMPrakhar

0
Deadlock condition can be thought of as the situation where we use infinite wait, for example

while(bowing[j]);

bowing[i] = false;

In my solution, I avoided the infinite wait, confirming with the question's language.