📄 os_pthread.h
字号:
// -*- 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 + -