home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / dho.zip / DHO / SRC / SOURCE.ZIP / thread.cc < prev    next >
C/C++ Source or Header  |  1995-08-27  |  2KB  |  130 lines

  1. /****************************************/
  2. /*    Developer Helper Object Set       */
  3. /*  (C) 1994-95 Thomas E. Bednarz, Jr.  */
  4. /*     All rights reserved              */
  5. /***************************************/
  6.  
  7. /* $Id: thread.cc 1.2 1995/08/13 03:21:12 teb Exp $ */
  8.  
  9.  
  10. #include<thread.h>
  11.  
  12.  
  13. //-----------------------------------------------------
  14. //
  15. TThread::TThread(PFNTHREAD func, ULONG args, ULONG stackSize)
  16. {
  17.    threadFunc = func;
  18.    fThreadArg = args;
  19.    fStackSize = stackSize;  
  20. }
  21.  
  22.  
  23. //-----------------------------------------------------
  24. //
  25. TThread::~TThread()
  26. {
  27.    exitThread();
  28. }
  29.  
  30.  
  31.  
  32. //-----------------------------------------------------
  33. //
  34. BOOL TThread::init(BOOL active)
  35. {
  36.    APIRET rc;
  37.    ULONG flag;
  38.  
  39.    if (active)
  40.       flag = 0L;
  41.    else
  42.       flag = 1L;
  43.  
  44.    rc = DosCreateThread(&threadId, threadFunc, 
  45.            fThreadArg, flag, fStackSize);
  46.  
  47.    return (BOOL)!rc;
  48. }
  49.  
  50.  
  51.  
  52. //-----------------------------------------------------
  53. //
  54. BOOL TThread::setPriority(ULONG delta)
  55. {
  56.   APIRET rc;
  57.  
  58.   rc =   DosSetPriority(PRTYS_THREAD, PRTYC_NOCHANGE, delta, threadId);
  59.  
  60.    return (BOOL)rc;
  61. }
  62.  
  63.  
  64.  
  65. //-----------------------------------------------------
  66. //
  67. void TThread::suspend()
  68. {
  69.    DosSuspendThread(threadId);
  70. }
  71.  
  72.  
  73.  
  74. //-----------------------------------------------------
  75. //
  76. void TThread::resume()
  77. {
  78.    DosResumeThread(threadId);
  79. }
  80.  
  81.  
  82.  
  83.  
  84. //-----------------------------------------------------
  85. //
  86. TID TThread::inqThreadId()
  87. {
  88.    return threadId;
  89. }
  90.  
  91.  
  92.  
  93.  
  94. //-----------------------------------------------------
  95. //
  96. void TThread::enterCritical()
  97. {
  98.    DosEnterCritSec();
  99. }
  100.  
  101.  
  102.  
  103. //-----------------------------------------------------
  104. //
  105. void TThread::exitCritical()
  106. {
  107.    DosExitCritSec();
  108. }
  109.  
  110.  
  111. //-----------------------------------------------------
  112. //
  113. void TThread::waitThread()
  114. {
  115.    DosWaitThread(&threadId, 0);
  116. }
  117.  
  118.  
  119. //-----------------------------------------------------
  120. //
  121. void TThread::exitThread()
  122. {
  123.    DosExit(EXIT_THREAD, 0);
  124. }
  125.  
  126.  
  127.  
  128.  
  129.  
  130.