nt.h
上传用户:sbftbdw
上传日期:2007-01-03
资源大小:379k
文件大小:2k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. // Package : omnithread
  2. // omnithread/nt.h Created : 6/95 tjr
  3. //
  4. //    Copyright (C) 1995, 1996, 1997 Olivetti & Oracle Research Laboratory
  5. //
  6. //    This file is part of the omnithread library
  7. //
  8. //    The omnithread library is free software; you can redistribute it and/or
  9. //    modify it under the terms of the GNU Library General Public
  10. //    License as published by the Free Software Foundation; either
  11. //    version 2 of the License, or (at your option) any later version.
  12. //
  13. //    This library is distributed in the hope that it will be useful,
  14. //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16. //    Library General Public License for more details.
  17. //
  18. //    You should have received a copy of the GNU Library General Public
  19. //    License along with this library; if not, write to the Free
  20. //    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  
  21. //    02111-1307, USA
  22. //
  23. //
  24. // OMNI thread implementation classes for NT threads.
  25. //
  26. #ifndef __omnithread_nt_h_
  27. #define __omnithread_nt_h_
  28. #include <windows.h>
  29. #ifndef __BCPLUSPLUS__
  30. #define OMNI_THREAD_WRAPPER 
  31.     unsigned __stdcall omni_thread_wrapper(LPVOID ptr);
  32. #else
  33. #define OMNI_THREAD_WRAPPER 
  34.     void _USERENTRY omni_thread_wrapper(void *ptr);
  35. #endif
  36. extern "C" OMNI_THREAD_WRAPPER;
  37. #define OMNI_MUTEX_IMPLEMENTATION
  38.     CRITICAL_SECTION crit;
  39. #define OMNI_CONDITION_IMPLEMENTATION
  40.     CRITICAL_SECTION crit;
  41.     omni_thread* waiting_head;
  42.     omni_thread* waiting_tail;
  43. #define OMNI_SEMAPHORE_IMPLEMENTATION
  44.     HANDLE nt_sem;
  45. #define OMNI_THREAD_IMPLEMENTATION
  46.     HANDLE handle;
  47.     DWORD nt_id;
  48.     void* return_val;
  49.     HANDLE cond_semaphore;
  50.     omni_thread* cond_next;
  51.     omni_thread* cond_prev;
  52.     BOOL cond_waiting;
  53.     static int nt_priority(priority_t);
  54.     friend class omni_condition;
  55.     friend OMNI_THREAD_WRAPPER;
  56. #endif