next up previous

6.2 Controlling Processes

load() loads a program on the specified nodes of a hypercube. This call has the same function as the load system command. Note that on the iPSC/860, each node can only execute one process at a time.

The two calls waitall() and waitone() can be used to synchronize node processes. waitall() blocks further execution of the process until the processes on all the specified nodes have completed. On the contrary, waitone() returns after one process in the specified set completes. Beware that a node process waiting for its own completion will hang indefinitely.

When a node program executes a fork(), a new process is created on an available node of the hypercube. An available node is one that does not have any process running on it. If a process has been loaded with load() and has terminated, then that node is unavailable until it has been waited on with the waitcube command, or the waitall() or waitone() calls.

A process on a specified node can be killed with the killproc() call. killproc() does not flush any messages pending for the killed process. The killcube() call kills all processes on all the nodes of the current hypercube and flushes pending messages.