Question: Why is the following implementation of condition variables wrong? Diagram how a set of threads could interact to achieve an invalid state. class Condition {
Why is the following implementation of condition variables wrong? Diagram how a set of threads could interact to achieve an invalid state.
class Condition
{
private: int waiting;
Semaphore *sema;
}
void Condition::Wait(Lock* l)
{
waiting++;
l->Release();
sema->P();
l->Acquire();
}
void Condition::Signal(Lock* l)
{
if (waiting > 0)
{
sema->V();
waiting--;
}
}
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
