Hi all,
In the method Process>>resume, which invokes primitive 87, the comment
states that the primitive should fail if the process is already waiting in
a queue.
But the implementation does not do that. If we execute (inspect) the
snippet:
| evaluationProcess result delay testProcess |
delay := Delay forMilliseconds: 50.
testProcess := Processor activeProcess.
evaluationProcess := [
delay unschedule.
result := testProcess isBlocked.
testProcess resume] fork.
delay wait.
result
it returns true (and no primitive failed error occurs), which means we
successfully resumed a blocked (waiting on a semaphore) process.
I also checked in VMMaker and indeed, the code does not check if the
process is on a queue or not before just putting it on a runnable list.
What do you think? Should the comment be changed or the implementation?
Florin