⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_pthread.h

📁 ICC means Internet Communication Component,it has many classes and frameworks that help develop netw
💻 H
📖 第 1 页 / 共 2 页
字号:
// -*- C++ -*-//=============================================================================/** *  @file    os_pthread.h * *  threads * *  $Id: os_pthread.h 79060 2007-07-30 07:15:59Z johnnyw $ * *  @author Don Hinton <dhinton@dresystems.com> *  @author This code was originally in various places including ace/OS.h. *///=============================================================================#ifndef ACE_OS_INCLUDE_OS_PTHREAD_H#define ACE_OS_INCLUDE_OS_PTHREAD_H#include "os/config-all.h"#if !defined (ACE_LACKS_PRAGMA_ONCE)# pragma once#endif /* ACE_LACKS_PRAGMA_ONCE */#if defined (ACE_HAS_PRIOCNTL)   // Need to #include thread.h before #defining THR_BOUND, etc.,   // when building without threads on SunOS 5.x.#  if defined (sun)#    include /**/ <thread.h>#  endif /* sun */   // Need to #include these before #defining USYNC_PROCESS on SunOS 5.x.#  include /**/ <sys/rtpriocntl.h>#  include /**/ <sys/tspriocntl.h>#endif /* ACE_HAS_PRIOCNTL */#include "os/os_include/sys/os_types.h"// This needs to go here *first* to avoid problems with AIX.# if defined (ACE_HAS_PTHREADS)#   define ACE_DONT_INCLUDE_ACE_SIGNAL_H#     include "os/os_include/os_signal.h"#   undef ACE_DONT_INCLUDE_ACE_SIGNAL_H#   if defined (DIGITAL_UNIX)#     define pthread_self __pthread_selfextern "C" pthread_t pthread_self (void);#   endif /* DIGITAL_UNIX */# endif /* ACE_HAS_PTHREADS */#if !defined (ACE_LACKS_PTHREAD_H)   extern "C" {#   if defined (ACE_TANDEM_T1248_PTHREADS)#   include /**/ <spthread.h>#   else#  include /**/ <pthread.h>#   endif   }#endif /* !ACE_LACKS_PTHREAD_H */#if defined (ACE_HAS_PTHREAD_NP_H)// FreeBSD declares _np (non-portable) pthread extensions in <pthread_np.h>#  include /**/ <pthread_np.h>#endif// @todo: need to reoganize to put includes at the top and the rest of the// code at the bottom.  Also, move the classes out of this file.#if defined (ACE_HAS_PTHREADS)#  define ACE_SCHED_OTHER SCHED_OTHER#  define ACE_SCHED_FIFO SCHED_FIFO#  define ACE_SCHED_RR SCHED_RR// Definitions for mapping POSIX pthreads draft 6 into 1003.1c names#  if defined (ACE_HAS_PTHREADS_DRAFT6)#    define PTHREAD_SCOPE_PROCESS           PTHREAD_SCOPE_LOCAL#    define PTHREAD_SCOPE_SYSTEM            PTHREAD_SCOPE_GLOBAL#    define PTHREAD_CREATE_UNDETACHED       0#    define PTHREAD_CREATE_DETACHED         1#    define PTHREAD_CREATE_JOINABLE         0#    define PTHREAD_EXPLICIT_SCHED          0#    define PTHREAD_MIN_PRIORITY            0#    define PTHREAD_MAX_PRIORITY            126#  endif /* ACE_HAS_PTHREADS_DRAFT6 */// Definitions for THREAD- and PROCESS-LEVEL priorities...some// implementations define these while others don't.  In order to// further complicate matters, we don't redefine the default (*_DEF)// values if they've already been defined, which allows individual// programs to have their own ACE-wide "default".// PROCESS-level values#  if (defined (_POSIX_PRIORITY_SCHEDULING) || defined (ACE_TANDEM_T1248_PTHREADS)) \   && !defined(_UNICOS) && !defined(UNIXWARE_7_1)#    define ACE_PROC_PRI_FIFO_MIN  (sched_get_priority_min(SCHED_FIFO))#    define ACE_PROC_PRI_RR_MIN    (sched_get_priority_min(SCHED_RR))#    if defined (HPUX)       // HP-UX's other is the SCHED_HPUX class, which uses historical       // values that have reverse semantics from POSIX (low value is       // more important priority). To use these in pthreads calls,       // the values need to be converted. The other scheduling classes       // don't need this special treatment.#      define ACE_PROC_PRI_OTHER_MIN \                      (sched_get_priority_min(SCHED_OTHER))#    else#      define ACE_PROC_PRI_OTHER_MIN (sched_get_priority_min(SCHED_OTHER))#    endif /* HPUX */#  else /* UNICOS is missing a sched_get_priority_min() implementation,              SCO too */#    define ACE_PROC_PRI_FIFO_MIN  0#    define ACE_PROC_PRI_RR_MIN    0#    define ACE_PROC_PRI_OTHER_MIN 0#  endif#  if defined (_POSIX_PRIORITY_SCHEDULING) && !defined(UNIXWARE_7_1)#    define ACE_PROC_PRI_FIFO_MAX  (sched_get_priority_max(SCHED_FIFO))#    define ACE_PROC_PRI_RR_MAX    (sched_get_priority_max(SCHED_RR))#    if defined (HPUX)#      define ACE_PROC_PRI_OTHER_MAX \                      (sched_get_priority_max(SCHED_OTHER))#    else#      define ACE_PROC_PRI_OTHER_MAX (sched_get_priority_max(SCHED_OTHER))#    endif /* HPUX */#  else /* SCO missing sched_get_priority_max() implementation */#    define ACE_PROC_PRI_FIFO_MAX  59#    define ACE_PROC_PRI_RR_MAX    59#    define ACE_PROC_PRI_OTHER_MAX 59#  endif#  if !defined(ACE_PROC_PRI_FIFO_DEF)#    define ACE_PROC_PRI_FIFO_DEF (ACE_PROC_PRI_FIFO_MIN + (ACE_PROC_PRI_FIFO_MAX - ACE_PROC_PRI_FIFO_MIN)/2)#  endif#  if !defined(ACE_PROC_PRI_RR_DEF)#    define ACE_PROC_PRI_RR_DEF (ACE_PROC_PRI_RR_MIN + (ACE_PROC_PRI_RR_MAX - ACE_PROC_PRI_RR_MIN)/2)#  endif#  if !defined(ACE_PROC_PRI_OTHER_DEF)#    define ACE_PROC_PRI_OTHER_DEF (ACE_PROC_PRI_OTHER_MIN + (ACE_PROC_PRI_OTHER_MAX - ACE_PROC_PRI_OTHER_MIN)/2)#  endif// THREAD-level values#  if defined(PRI_FIFO_MIN) && defined(PRI_FIFO_MAX) && defined(PRI_RR_MIN) && defined(PRI_RR_MAX) && defined(PRI_OTHER_MIN) && defined(PRI_OTHER_MAX)#    if !defined (ACE_THR_PRI_FIFO_MIN)#      define ACE_THR_PRI_FIFO_MIN  (long) PRI_FIFO_MIN#    endif /* !ACE_THR_PRI_FIFO_MIN */#    if !defined (ACE_THR_PRI_FIFO_MAX)#      define ACE_THR_PRI_FIFO_MAX  (long) PRI_FIFO_MAX#    endif /* !ACE_THR_PRI_FIFO_MAX */#    if !defined (ACE_THR_PRI_RR_MIN)#      define ACE_THR_PRI_RR_MIN    (long) PRI_RR_MIN#    endif /* !ACE_THR_PRI_RR_MIN */#    if !defined (ACE_THR_PRI_RR_MAX)#      define ACE_THR_PRI_RR_MAX    (long) PRI_RR_MAX#    endif /* !ACE_THR_PRI_RR_MAX */#    if !defined (ACE_THR_PRI_OTHER_MIN)#      define ACE_THR_PRI_OTHER_MIN (long) PRI_OTHER_MIN#    endif /* !ACE_THR_PRI_OTHER_MIN */#    if !defined (ACE_THR_PRI_OTHER_MAX)#      define ACE_THR_PRI_OTHER_MAX (long) PRI_OTHER_MAX#    endif /* !ACE_THR_PRI_OTHER_MAX */#  elif defined (AIX)     // AIX's priority range is 1 (low) to 127 (high). There aren't     // any preprocessor macros I can find. PRIORITY_MIN is for     // process priorities, as far as I can see, and does not apply     // to thread priority. The 1 to 127 range is from the     // pthread_attr_setschedparam man page (Steve Huston, 18-May-2001).#    if !defined (ACE_THR_PRI_FIFO_MIN)#      define ACE_THR_PRI_FIFO_MIN  (long) 1#    endif /* !ACE_THR_PRI_FIFO_MIN */#    if !defined (ACE_THR_PRI_FIFO_MAX)#      define ACE_THR_PRI_FIFO_MAX  (long) 127#    endif /* !ACE_THR_PRI_FIFO_MAX */#    if !defined (ACE_THR_PRI_RR_MIN)#      define ACE_THR_PRI_RR_MIN    (long) 1#    endif /* !ACE_THR_PRI_RR_MIN */#    if !defined (ACE_THR_PRI_RR_MAX)#      define ACE_THR_PRI_RR_MAX    (long) 127#    endif /* !ACE_THR_PRI_RR_MAX */#    if !defined (ACE_THR_PRI_OTHER_MIN)#      define ACE_THR_PRI_OTHER_MIN (long) 1#    endif /* !ACE_THR_PRI_OTHER_MIN */#    if !defined (ACE_THR_PRI_OTHER_MAX)#      define ACE_THR_PRI_OTHER_MAX (long) 127#    endif /* !ACE_THR_PRI_OTHER_MAX */#  elif defined (sun)#    if !defined (ACE_THR_PRI_FIFO_MIN)#      define ACE_THR_PRI_FIFO_MIN  (long) 0#    endif /* !ACE_THR_PRI_FIFO_MIN */#    if !defined (ACE_THR_PRI_FIFO_MAX)#      define ACE_THR_PRI_FIFO_MAX  (long) 59#    endif /* !ACE_THR_PRI_FIFO_MAX */#    if !defined (ACE_THR_PRI_RR_MIN)#      define ACE_THR_PRI_RR_MIN    (long) 0#    endif /* !ACE_THR_PRI_RR_MIN */#    if !defined (ACE_THR_PRI_RR_MAX)#      define ACE_THR_PRI_RR_MAX    (long) 59#    endif /* !ACE_THR_PRI_RR_MAX */#    if !defined (ACE_THR_PRI_OTHER_MIN)#      define ACE_THR_PRI_OTHER_MIN (long) 0#    endif /* !ACE_THR_PRI_OTHER_MIN */#    if !defined (ACE_THR_PRI_OTHER_MAX)#      define ACE_THR_PRI_OTHER_MAX (long) 127#    endif /* !ACE_THR_PRI_OTHER_MAX */#  else#    if !defined (ACE_THR_PRI_FIFO_MIN)#      define ACE_THR_PRI_FIFO_MIN  (long) ACE_PROC_PRI_FIFO_MIN#    endif /* !ACE_THR_PRI_FIFO_MIN */#    if !defined (ACE_THR_PRI_FIFO_MAX)#      define ACE_THR_PRI_FIFO_MAX  (long) ACE_PROC_PRI_FIFO_MAX#    endif /* !ACE_THR_PRI_FIFO_MAX */#    if !defined (ACE_THR_PRI_RR_MIN)#      define ACE_THR_PRI_RR_MIN    (long) ACE_PROC_PRI_RR_MIN#    endif /* !ACE_THR_PRI_RR_MIN */#    if !defined (ACE_THR_PRI_RR_MAX)#      define ACE_THR_PRI_RR_MAX    (long) ACE_PROC_PRI_RR_MAX#    endif /* !ACE_THR_PRI_RR_MAX */#    if !defined (ACE_THR_PRI_OTHER_MIN)#      define ACE_THR_PRI_OTHER_MIN (long) ACE_PROC_PRI_OTHER_MIN#    endif /* !ACE_THR_PRI_OTHER_MIN */#    if !defined (ACE_THR_PRI_OTHER_MAX)#      define ACE_THR_PRI_OTHER_MAX (long) ACE_PROC_PRI_OTHER_MAX#    endif /* !ACE_THR_PRI_OTHER_MAX */#  endif#  if !defined(ACE_THR_PRI_FIFO_DEF)#    define ACE_THR_PRI_FIFO_DEF  ((ACE_THR_PRI_FIFO_MIN + ACE_THR_PRI_FIFO_MAX)/2)#  endif#  if !defined(ACE_THR_PRI_RR_DEF)#    define ACE_THR_PRI_RR_DEF ((ACE_THR_PRI_RR_MIN + ACE_THR_PRI_RR_MAX)/2)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -