home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / MAILBOX.ZIP / MPTHDEX1.C < prev    next >
Encoding:
C/C++ Source or Header  |  1988-06-27  |  2.9 KB  |  81 lines

  1. /****************************************************************************/
  2. /* mpthdex1.c - THREAD CLUSTER EXAMPLE 1                    */
  3. /* Created:  10/31/87        Release:  0.7        Version:  06/27/88  */
  4. /****************************************************************************
  5. (c) Copyright 1987, 1988 by Michael Benjamin Parker     (USA SS# 557-49-4130)
  6.  
  7. All Rights Reserved unless specified in the following include files: */
  8. #include "mptsk.cpy" /*
  9.  
  10. DO NOT REMOVE OR ALTER THIS NOTICE AND ITS PROVISIONS.
  11. ****************************************************************************/
  12. #include "mpthd.h"
  13. #define    NDEBUG
  14. #include "mpbug.h"
  15. #include "mpmisc.h"
  16. #include <stdio.h>
  17. /****************************************************************************/
  18. /****************************************************************************/
  19. /****************************************************************************/
  20.     void    tabit(n)
  21.         UINT    n;
  22. {
  23.     printf("\n");
  24.     while (n--)     printf("\t");
  25. }
  26. /****************************************************************************/
  27. MPDEFID    mpthdfn_tabs;        /* "GLOBAL" VARIABLES */
  28. MPDEFID    mpthdfn_nextmpthd;    /* (ie, GLOBAL WITHIN A THREAD) */
  29.  
  30. MPTHDID    mpthdfn(oldmpthd)
  31.     MPTHDID oldmpthd;
  32. {
  33.     UINT    count=    2;
  34.     for (EVER) {
  35.         tabit(mpdef_myval(mpthdfn_tabs,UINT));
  36.         if (!count--)        break;
  37.         printf("THREAD %ld",ptr_2int(mpthd_me()));
  38. /*        mpbug_valp(mpdef_myval(mpthdfn_nextmpthd,MPTHDID));
  39.         break;
  40. */        mpthd_switch(mpdef_myval(mpthdfn_nextmpthd,MPTHDID));
  41.     }
  42.     printf("%ld RETURNING",ptr_2int(mpthd_me()));
  43.     return(oldmpthd);
  44. }
  45. /****************************************************************************/
  46. /****************************************************************************/
  47. #define    NOOFMPTHDFNS    (3)
  48. void    main()
  49. {
  50.     MPTHDID    mpthds[NOOFMPTHDFNS];
  51.     char    buff[NOOFMPTHDFNS][1000];
  52.     UINT    n=    NOOFMPTHDFNS;
  53.     mpbug_init(~0);
  54.     mpbug_lev();mpbug_cmt("Initializing mpprc");
  55.     mpthd_setup();
  56.  
  57.     mpthdfn_tabs=            mpdef_myadd(UINT);
  58.     mpbug_val(mpthdfn_tabs,ld);
  59.     mpthdfn_nextmpthd=        mpdef_myadd(MPTHDID);
  60.     mpbug_val(mpthdfn_nextmpthd,ld);
  61.  
  62.     mpbug_lev();mpbug_cmt("Starting Program");
  63.     printf("\n** Main Thread %ld **",ptr_2int(mpthd_me()));
  64.  
  65.     while (n--) {
  66.         mpthds[n]=    mpthd_init(buff[n],1000,mpthdfn);
  67.         mpbug_valp(mpthds[n]);
  68.             mpdef_val(mpthds[n],mpthdfn_tabs,UINT)=        n*2;
  69.             mpdef_val(mpthds[n],mpthdfn_nextmpthd,MPTHDID)=    mpthds[n+1];
  70.                 mpbug_valp(mpdef_val(mpthds[n],mpthdfn_nextmpthd,MPTHDID));
  71.         }
  72.         mpdef_val(mpthds[NOOFMPTHDFNS-1],mpthdfn_nextmpthd,MPTHDID)=
  73.                                 mpthds[0];
  74.  
  75.     mpthd_switch(mpthds[NOOFMPTHDFNS-1]);
  76.     printf("\n** Main Thread %ld Ending **\n\n",ptr_2int(mpthd_me()));
  77. }
  78. /****************************************************************************/
  79. /****************************************************************************/
  80. /****************************************************************************/
  81.