TEST6.C
上传用户:sunrenlu
上传日期:2022-06-13
资源大小:1419k
文件大小:1k
源码类别:

操作系统开发

开发平台:

DOS

  1. /**************************************************************************/
  2. /* test6 - shows byte queue tools                                         */
  3. /**************************************************************************/
  4. #include "rtos.h"
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. void *peer = NULL;
  8. bq_str *bq = NULL;  /* byte queue */
  9. void switcher1(DWORD arg)
  10. {
  11.     int x;
  12.     int cnt = 1;
  13. #if defined(__TURBOC__)||defined(__BORLANDC__)
  14.     randomize();
  15. #else
  16.     srand( time( 0 ));
  17. #endif
  18.     do {
  19. putch('.');
  20.         rt_yield();
  21.         x = rand();
  22.         if ( x & 1 ) {
  23.             x = ( x & 255 );
  24.             cprintf( " sending %u (%u)", x, cnt += 5 );
  25.             bq_writebyte( bq, x );
  26.             bq_writebyte( bq, x );
  27.             bq_writebyte( bq, x );
  28.             bq_writebyte( bq, x );
  29.             bq_writebyte( bq, x );
  30.         }
  31.     } while ( 1 );
  32. }
  33. void switcher2(DWORD arg)
  34. {
  35.     int x, cnt, i;
  36.     cnt = 1;
  37.     do {
  38.         rt_yield();
  39.         if ( bq_readbyte( bq , &x ))
  40.             cprintf(" read %u (%u)rn", x, cnt++ );
  41.         else
  42.             cprintf(".");
  43.     } while ( 1 );
  44. }
  45. main()
  46. {
  47.     kdebug = 1;
  48.     rt_init(100);
  49.     bq = bq_alloc( 100 );
  50.     cputs("starting...rn");
  51.     peer = rt_newthread( switcher2, 2,4096, 0, "worker 2" );
  52.     rt_newthread( switcher1, 1,4096, 0, "worker 1" );
  53.     rt_sleep( 10000 );
  54. }