Process status

Mike Klein mike at
Fri Jul 10 22:19:46 UTC 1998

On Fri, 10 Jul 1998, Alexander Lazarevic wrote:

> Hi!
> How do i ckeck that a process has finished?

If a Process is not the active process, the process's suspendedContext
being nil should indicate that the process is terminated.

However, rather than polling for completion, you should use a Semaphore.

For example: (modification of you code)

 | shepherd completionIndicator |
 completionIndicator := Semaphore new.
 shepherd := [1000 atRandom timesRepeat: [Transcript show: 'Sheep'; cr].
              completionIndicator signal.
              Processor yield] newProcess.
 shepherd resume.
 "Herd complete?"
 completionIndicator wait. "This line doesn't busy wait, unlike the line
 "shepherd running whileTrue: [Delay forSeconds: 1]."

If the shepard process get's terminated without running to completion,
the semaphore will never get signaled, though.

Does Squeak have unwind/ensure blocks?

> ------  Alexander  Lazarevic  ------------------------------------------------

   Mike Klein

More information about the Squeak-dev mailing list