Anybody out there know what the term "passing the condition" means? I'm just a little confused about it all and an elaboration on the idea behind would be good. In particular, here's the pseudo code we've been studying that revolves around it. It's based on the Shortest-Job-Next Allocation problem.
monitor SJN {
?bool free = true; # invariant: turn ordered by time && (free -> turn is empty)
?condition_variable turn; # signaled when resource available
?# request the resource
?procedure request(int time) {
? ?if (free)
? ? ?free = false;
? ?else
? ? ?wait(turn, time);
?}
?# release the resource
?procedure release() {
? ?if(empty(turn)) # are there processes waiting on the CV 'turn'?
? ? ?free = true;
? ?else
? ? ?signal(turn);
?}
}
I'm confused about this because consider the case where we're done usingrelease()d decide to release() it.
If there are no proceempty()n the CV (ie.true will return true and the if block will be executed), then we set:
free = true;
Then we don't need to signal. That makes sense.
But coare case where there are processes blocked on the CV?! (ie. those processes are sleeping waiting for it and need to be woken up by the process finishing with the rsignal(turn) calling <empty()).
Well, empty() would return false and the else block would be executed. Here the code says:
signal(turn);
But we haven't reset free yet? So how could another process request the resource and successfully get it? Won't it just be put to sleewait()it'll call wait())since free is still false?
If people haven't learned from Trump University, Trump Steaks, Trump Casino, Trump Coin, Trump NFT, and etc. then they deserve to lose their money to this too.
It's insane how there's a base of people out there that will buy this and other stuff from him, like a cult leader, it's insane. It's clear as day that they're getting played/swindled but w/e. Who am I to say what someone else does with their money? Spend away, just don't moan about it later when you're on tough times.
FU M$ all the way to hell.
Local admin account and me being able to log in to my machine offline and decrypt anything mine > either this or no more M$ for me.
The grift is strong in this one, like his NFT's and coins.
America is broken on all levels, but some people will fall for this and call it the best phone ever.....
Question
fault
Howdy,
Anybody out there know what the term "passing the condition" means? I'm just a little confused about it all and an elaboration on the idea behind would be good. In particular, here's the pseudo code we've been studying that revolves around it. It's based on the Shortest-Job-Next Allocation problem.
I'm confused about this because consider the case where we're done usingrelease()d decide to release() it.
If there are no proceempty()n the CV (ie.true will return true and the if block will be executed), then we set:
Then we don't need to signal. That makes sense.
But coare case where there are processes blocked on the CV?! (ie. those processes are sleeping waiting for it and need to be woken up by the process finishing with the rsignal(turn) calling <empty()).
Well, empty() would return false and the else block would be executed. Here the code says:
But we haven't reset free yet? So how could another process request the resource and successfully get it? Won't it just be put to sleewait()it'll call wait())since free is still false?
Any clarification would be great.
Edited by faultLink to comment
https://www.neowin.net/forum/topic/363103-concurrent-programming-passing-the-condition/Share on other sites
4 answers to this question
Recommended Posts