home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 362_01 / test6.c < prev    next >
C/C++ Source or Header  |  1991-12-11  |  2KB  |  76 lines

  1. /*****************************************************************************
  2.  *                    test6.c                     *
  3.  *****************************************************************************
  4.  * DESCRIPTION:    Verification routine for the RMAXTask multitasking system.   *
  5.  *                                         *
  6.  *        Test of several tasks queueing up at the same mailbox.         *
  7.  *                                         *
  8.  * REVISIONS:     3 JUL 90 - RAC - Original code                     *
  9.  *****************************************************************************/
  10.  
  11. #include    <stdio.h>
  12. #include    <dos.h>
  13. #include    <string.h>
  14. #include    "\rmaxtask\source\rmaxtask.h"
  15.  
  16. TDESC    *my_mailbox;
  17.  
  18. int    break_handler() {
  19.     stop_RMAXTask();                /* Do 'about to die' cleanup */
  20.     printf("\nCtrl-Break pressed.  Program terminated.\n");
  21.     return 0;                    /* This will abort program */
  22.     }                        /* End break_handler() */
  23.  
  24. void A() {
  25.     char    message[50];
  26.     unsigned    size;
  27.     for(;;) {
  28.     get_mail(message, &size, my_mailbox, 0, 0);
  29.     printf("Task A got message %s\n",   message);
  30.     }    
  31.     }
  32.  
  33. void B() {
  34.     char    message[50];
  35.     unsigned    size;
  36.     for(;;) {
  37.     get_mail(message, &size, my_mailbox, 0, 0);
  38.     printf("Task B got message %s\n",   message);
  39.     }    
  40.     }
  41.  
  42. void C() {
  43.     char    message[50];
  44.     unsigned    size;
  45.     for(;;) {
  46.     get_mail(message, &size, my_mailbox, 0, 0);
  47.     printf("Task C got message %s\n",   message);
  48.     }    
  49.     }
  50.  
  51. void sender() {
  52.  
  53.     int        i;
  54.     char    message[50];
  55.  
  56.     for (i=1; i<20; i++) {
  57.     sprintf(message, "%d", i);
  58.     send_mail(message, 1 + strlen(message), my_mailbox);
  59.     }
  60.     }
  61.  
  62. void main() {
  63.  
  64.     int        i;                /* Generic temp */
  65.  
  66.     start_RMAXTask();
  67.     ctrlbrk(break_handler);            /* Establish break handler */
  68.     my_mailbox = create_mailbox();
  69.     create_task("sender", sender, STANDARD_PRIORITY-1, STANDARD_STACK);
  70.     create_task("A", A, STANDARD_PRIORITY, STANDARD_STACK);
  71.     create_task("B", B, STANDARD_PRIORITY, STANDARD_STACK);
  72.     create_task("C", C, STANDARD_PRIORITY, STANDARD_STACK);
  73.     suspend(38);
  74.     stop_RMAXTask();
  75.     }
  76.