NOTE: THIS EXAMPLE PROGRAM NEEDS TO BE RUN WITH EXACTLY 2 PROCESSORS.
---------------------------------------------------------------------

Threadobjects are chares or groups with an extended capability for 
communication with other threadobjects.  They inherit from the 
class TempoChare (instead of Chare) or from the class TempoGroup(instead of
Group), or from the class TempoArray (instead of ArrayElement).

The calls available are :

void ckTempoRecv(int tag, void *buffer, int buflen)

Used to receive a message identified by "tag".  The message is copied into the 
"buffer" upto a maximum length of "buflen" bytes.  This is a blocking call.

static void ckTempoSend(CkChareID chareid, int tag, void *buffer, int buflen)

Used to send a message of length "buflen" contained in the specified "buffer"
to a chare identified by "chareid".  The message being sent is tagged with the
specified "tag".  Note that this function is declared static.

int ckTempoProbe(int tag)

Used to check if a message tagged by the specified "tag" is currently available
for this object.  Returns 1 if the message exists, else returns 0.

The calls specifically for groups are :

static void ckTempoBcast(int sender, int bocid, int tag,
                                     void *buffer, int buflen)

This call has any effect only if the first argument "sender" is non-zero.
Used to send a message of length "buflen" contained in the specified "buffer"
to all the branches of a group identified by "bocid".  The message being sent
is tagged with the specified "tag".  Note that this function is declared
static.

void ckTempoBcast(int sender, int tag, void *buffer, int buflen)

This call has any effect only if the first argument "sender" is non-zero.
Used to send a message of length "buflen" contained in the specified "buffer"
to all the branches of the group from which the call is made. 
The message being sent is tagged with the specified "tag".  

static void ckTempoSendBranch(int bocid, int tag, void *buffer,
                                 int buflen, int processor)

Used to send a message of length "buflen" contained in the specified "buffer"
to the branch of the group identified by "bocid" which is on the processor
numbered "processor".  The message being sent is tagged with the specified
"tag".  Note that this function is declared static.  

The calls specifically for arrays are :

static void ckTempoSendElem(CkAID aid, int tag, void *buf, int buflen,int idx);

Used to send a message of length buflen contained in the sepcified buffer buf
to array element idx of array specified by aid. Note that this method is
static.

void ckTempoSendElem(int tag, void *buf, int buflen,int idx);

Used to send a message of length buflen contained in the sepcified buffer buf
to array element idx of array from which this call is made. 

