home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************/
- /* mpthdex1.c - THREAD CLUSTER EXAMPLE 1 */
- /* Created: 10/31/87 Release: 0.7 Version: 06/27/88 */
- /****************************************************************************
- (c) Copyright 1987, 1988 by Michael Benjamin Parker (USA SS# 557-49-4130)
-
- All Rights Reserved unless specified in the following include files: */
- #include "mptsk.cpy" /*
-
- DO NOT REMOVE OR ALTER THIS NOTICE AND ITS PROVISIONS.
- ****************************************************************************/
- #include "mpthd.h"
- #define NDEBUG
- #include "mpbug.h"
- #include "mpmisc.h"
- #include <stdio.h>
- /****************************************************************************/
- /****************************************************************************/
- /****************************************************************************/
- void tabit(n)
- UINT n;
- {
- printf("\n");
- while (n--) printf("\t");
- }
- /****************************************************************************/
- MPDEFID mpthdfn_tabs; /* "GLOBAL" VARIABLES */
- MPDEFID mpthdfn_nextmpthd; /* (ie, GLOBAL WITHIN A THREAD) */
-
- MPTHDID mpthdfn(oldmpthd)
- MPTHDID oldmpthd;
- {
- UINT count= 2;
- for (EVER) {
- tabit(mpdef_myval(mpthdfn_tabs,UINT));
- if (!count--) break;
- printf("THREAD %ld",ptr_2int(mpthd_me()));
- /* mpbug_valp(mpdef_myval(mpthdfn_nextmpthd,MPTHDID));
- break;
- */ mpthd_switch(mpdef_myval(mpthdfn_nextmpthd,MPTHDID));
- }
- printf("%ld RETURNING",ptr_2int(mpthd_me()));
- return(oldmpthd);
- }
- /****************************************************************************/
- /****************************************************************************/
- #define NOOFMPTHDFNS (3)
- void main()
- {
- MPTHDID mpthds[NOOFMPTHDFNS];
- char buff[NOOFMPTHDFNS][1000];
- UINT n= NOOFMPTHDFNS;
- mpbug_init(~0);
- mpbug_lev();mpbug_cmt("Initializing mpprc");
- mpthd_setup();
-
- mpthdfn_tabs= mpdef_myadd(UINT);
- mpbug_val(mpthdfn_tabs,ld);
- mpthdfn_nextmpthd= mpdef_myadd(MPTHDID);
- mpbug_val(mpthdfn_nextmpthd,ld);
-
- mpbug_lev();mpbug_cmt("Starting Program");
- printf("\n** Main Thread %ld **",ptr_2int(mpthd_me()));
-
- while (n--) {
- mpthds[n]= mpthd_init(buff[n],1000,mpthdfn);
- mpbug_valp(mpthds[n]);
- mpdef_val(mpthds[n],mpthdfn_tabs,UINT)= n*2;
- mpdef_val(mpthds[n],mpthdfn_nextmpthd,MPTHDID)= mpthds[n+1];
- mpbug_valp(mpdef_val(mpthds[n],mpthdfn_nextmpthd,MPTHDID));
- }
- mpdef_val(mpthds[NOOFMPTHDFNS-1],mpthdfn_nextmpthd,MPTHDID)=
- mpthds[0];
-
- mpthd_switch(mpthds[NOOFMPTHDFNS-1]);
- printf("\n** Main Thread %ld Ending **\n\n",ptr_2int(mpthd_me()));
- }
- /****************************************************************************/
- /****************************************************************************/
- /****************************************************************************/