BaseThread.cpp
上传用户:cnxinhai
上传日期:2013-08-06
资源大小:265k
文件大小:2k
源码类别:

DVD

开发平台:

Visual C++

  1. /*********************************************************************************
  2. * Copyright (C) 2000,2001 by Sean C. Hubbell.   All Rights Reserved.            *
  3. *********************************************************************************
  4. * This library is free software; you can redistribute it and/or                 *
  5. * modify it under the terms of the GNU Lesser General Public                    *
  6. * License as published by the Free Software Foundation; either                  *
  7. * version 2.1 of the License, or (at your option) any later version.            *
  8. *                                                                               *
  9. * This library is distributed in the hope that it will be useful,               *
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU             *
  12. * Lesser General Public License for more details.                               *
  13. *                                                                               *
  14. * You should have received a copy of the GNU Lesser General Public              *
  15. * License along with this code; if not, write to the Free Software              *
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.    *
  17. *********************************************************************************/
  18. #include <process.h>
  19. #include "BaseThread.h"
  20. CBaseThread::CBaseThread (void)
  21. {
  22. m_status = NOT_INITIALIZED;
  23. }
  24. CBaseThread::~CBaseThread (void)
  25. {
  26. }
  27. bool CBaseThread::isInitialized (void)
  28. {
  29. return (m_status == INITIALIZED);
  30. }
  31. bool CBaseThread::hasStarted (void)
  32. {
  33. return (m_status == STARTED);
  34. }
  35. bool CBaseThread::isError (void)
  36. {
  37. return (m_status == THREAD_ERROR);
  38. }
  39. bool CBaseThread::isCompleted (void)
  40. {
  41. return (m_status == COMPLETED);
  42. }
  43. bool CBaseThread::isTerminated (void)
  44. {
  45. return (m_status == TERMINATED);
  46. }
  47. void CBaseThread::theThreadFuncRedirector (void* pParam)
  48. {
  49. reinterpret_cast<CBaseThread*>(pParam)->theThreadFunc();
  50. }
  51. void CBaseThread::start (void)
  52. {
  53. if ((_beginthread (theThreadFuncRedirector, 0, (void*)this)) != (unsigned long)-1)
  54. {
  55. m_status = STARTED;
  56. }
  57. else
  58. {
  59. m_status = THREAD_ERROR;
  60. }
  61. }
  62. void CBaseThread::stop (void)
  63. {
  64. m_status = STOPPED;
  65. }
  66. void CBaseThread::initialize (void)
  67. {
  68. m_status = INITIALIZED;
  69. }