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

操作系统开发

开发平台:

DOS

  1. /**************************************************************************/
  2. /* test5 - 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. #if defined(__TURBOC__)||defined(__BORLANDC__)
  13.     randomize();
  14. #else
  15.     srand( time( 0 ));
  16. #endif
  17.     do {
  18.         rt_yield();
  19.         x = rand();
  20.         if ( x > 25000 ) {
  21.             x = ( x & 255 );
  22.             cprintf( " sending %u ", x );
  23.             bq_writebyte( bq, x );
  24.             bq_writebyte( bq, x );
  25.             bq_writebyte( bq, x );
  26.             bq_writebyte( bq, x );
  27.             bq_writebyte( bq, x );
  28.         }
  29.     } while ( 1 );
  30. }
  31. void switcher2(DWORD arg)
  32. {
  33.     int x, cnt, i;
  34.     do {
  35.         rt_yield();
  36.         cnt = bq_readcount( bq );
  37.         if ( cnt == 0 ) cprintf(".");
  38.         else for ( i = 0 ; i < cnt ; ++i ) {
  39.             if ( bq_readbyte( bq , &x ))
  40.                 cprintf(" read %u rn", x );
  41.         }
  42.     } while ( 1 );
  43. }
  44. main()
  45. {
  46.     kdebug = 1;
  47.     rt_init(100);
  48.     bq = bq_alloc( 100 );
  49.     cputs("starting...rn");
  50.     peer = rt_newthread( switcher2, 2,4096, 0, "worker 2" );
  51.     rt_newthread( switcher1, 1,4096, 0, "worker 1" );
  52.     rt_sleep( 10000 );
  53. }