亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pthread.h

?? “網(wǎng)絡(luò)安全技術(shù)實(shí)踐與代碼詳解”實(shí)例代碼
?? H
?? 第 1 頁 / 共 3 頁
字號(hào):
#define _POSIX_THREAD_PRIO_INHERIT
#define _POSIX_THREAD_PRIO_PROTECT
#define _POSIX_THREAD_PROCESS_SHARED

#endif				/* KLUDGE */

/*
 * POSIX Limits
 *
 *	PTHREAD_DESTRUCTOR_ITERATIONS
 *		Standard states this must be at least
 *		4.
 *
 *	PTHREAD_KEYS_MAX
 *		WIN32 permits only 64 TLS keys per process.
 *		This limitation could be worked around by
 *		simply simulating keys.
 *
 *	PTHREADS_STACK_MIN
 *		POSIX specifies 0 which is also the value WIN32
 *		interprets as allowing the system to
 *		set the size to that of the main thread. The
 *		maximum stack size in Win32 is 1Meg. WIN32
 *		allocates more stack as required up to the 1Meg
 *		limit.
 *
 *	PTHREAD_THREADS_MAX
 *		Not documented by WIN32. Wrote a test program
 *		that kept creating threads until it failed
 *		revealed this approximate number (Windows NT).
 *		This number is somewhat less for Windows 9x
 *		and is effectively less than 64. Perhaps this
 *		constant should be set at DLL load time.
 *
 */
#define PTHREAD_DESTRUCTOR_ITERATIONS			       4
#define PTHREAD_KEYS_MAX			64
#define PTHREAD_STACK_MIN			 0
#define PTHREAD_THREADS_MAX		      2019
#ifndef _POSIX_SEM_NSEMS_MAX
/* Not used and only an arbitrary value. */
#  define _POSIX_SEM_NSEMS_MAX		      1024
#endif
#ifndef _POSIX_SEM_VALUE_MAX
#  define _POSIX_SEM_VALUE_MAX	       (INT_MAX/2)
#endif

#if __GNUC__ && ! defined (__declspec)
# error Please upgrade your GNU compiler to one that supports __declspec.
#endif

/*
 * When building the DLL code, you should define PTW32_BUILD so that
 * the variables/functions are exported correctly. When using the DLL,
 * do NOT define PTW32_BUILD, and then the variables/functions will
 * be imported correctly.
 */
#ifdef _DLL
#  ifdef PTW32_BUILD
#    define PTW32_DLLPORT __declspec (dllexport)
#  else
#    define PTW32_DLLPORT __declspec (dllimport)
#  endif
#endif

#if defined(_UWIN) && PTW32_LEVEL >= PTW32_LEVEL_MAX
#   include	<sys/types.h>
#else
typedef struct pthread_t_ *pthread_t;
typedef struct pthread_attr_t_ *pthread_attr_t;
typedef struct pthread_once_t_ pthread_once_t;
typedef struct pthread_key_t_ *pthread_key_t;
typedef struct pthread_mutex_t_ *pthread_mutex_t;
typedef struct pthread_mutexattr_t_ *pthread_mutexattr_t;
typedef struct pthread_cond_t_ *pthread_cond_t;
typedef struct pthread_condattr_t_ *pthread_condattr_t;
#endif
typedef struct pthread_rwlock_t_ *pthread_rwlock_t;
typedef struct pthread_rwlockattr_t_ *pthread_rwlockattr_t;
typedef struct pthread_spinlock_t_ *pthread_spinlock_t;
typedef struct pthread_barrier_t_ *pthread_barrier_t;
typedef struct pthread_barrierattr_t_ *pthread_barrierattr_t;

/*
 * ====================
 * ====================
 * POSIX Threads
 * ====================
 * ====================
 */

enum {
/*
 * pthread_attr_{get,set}detachstate
 */
  PTHREAD_CREATE_JOINABLE	= 0,  /* Default */
  PTHREAD_CREATE_DETACHED	= 1,

/*
 * pthread_attr_{get,set}inheritsched
 */
  PTHREAD_INHERIT_SCHED 	= 0,
  PTHREAD_EXPLICIT_SCHED	= 1,  /* Default */

/*
 * pthread_{get,set}scope
 */
  PTHREAD_SCOPE_PROCESS 	= 0,
  PTHREAD_SCOPE_SYSTEM		= 1,  /* Default */

/*
 * pthread_setcancelstate paramters
 */
  PTHREAD_CANCEL_ENABLE 	= 0,  /* Default */
  PTHREAD_CANCEL_DISABLE	= 1,

/*
 * pthread_setcanceltype parameters
 */
  PTHREAD_CANCEL_ASYNCHRONOUS	= 0,
  PTHREAD_CANCEL_DEFERRED	= 1,  /* Default */

/*
 * pthread_mutexattr_{get,set}pshared
 * pthread_condattr_{get,set}pshared
 */
  PTHREAD_PROCESS_PRIVATE	= 0,
  PTHREAD_PROCESS_SHARED	= 1,

/*
 * pthread_barrier_wait
 */
  PTHREAD_BARRIER_SERIAL_THREAD = -1
};

/*
 * ====================
 * ====================
 * Cancelation
 * ====================
 * ====================
 */
#define PTHREAD_CANCELED       ((void *) -1)


/*
 * ====================
 * ====================
 * Once Key
 * ====================
 * ====================
 */
#define PTHREAD_ONCE_INIT	{ PTW32_FALSE, -1 }

struct pthread_once_t_
{
  int done;		    /* indicates if user function executed  */
  long started; 	    /* First thread to increment this value */
			    /* to zero executes the user function   */
};


/*
 * ====================
 * ====================
 * Object initialisers
 * ====================
 * ====================
 */
#define PTHREAD_MUTEX_INITIALIZER ((pthread_mutex_t) -1)

#define PTHREAD_COND_INITIALIZER ((pthread_cond_t) -1)

#define PTHREAD_RWLOCK_INITIALIZER ((pthread_rwlock_t) -1)

#define PTHREAD_SPINLOCK_INITIALIZER ((pthread_spinlock_t) -1)


/*
 * Mutex types.
 */
enum
{
  /* Compatibility with LinuxThreads */
  PTHREAD_MUTEX_FAST_NP,
  PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK_NP,
  PTHREAD_MUTEX_TIMED_NP = PTHREAD_MUTEX_FAST_NP,
  PTHREAD_MUTEX_ADAPTIVE_NP = PTHREAD_MUTEX_FAST_NP,
  /* For compatibility with POSIX */
  PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_FAST_NP,
  PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
  PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
};


/* There are three implementations of cancel cleanup.
 * Note that pthread.h is included in both application
 * compilation units and also internally for the library.
 * The code here and within the library aims to work
 * for all reasonable combinations of environments.
 *
 * The three implementations are:
 *
 *   WIN32 SEH
 *   C
 *   C++
 *
 * Please note that exiting a push/pop block via
 * "return", "exit", "break", or "continue" will
 * lead to different behaviour amongst applications
 * depending upon whether the library was built
 * using SEH, C++, or C. For example, a library built
 * with SEH will call the cleanup routine, while both
 * C++ and C built versions will not.
 */

/*
 * Define defaults for cleanup code.
 * Note: Unless the build explicitly defines one of the following, then
 * we default to standard C style cleanup. This style uses setjmp/longjmp
 * in the cancelation and thread exit implementations and therefore won't
 * do stack unwinding if linked to applications that have it (e.g.
 * C++ apps). This is currently consistent with most/all commercial Unix
 * POSIX threads implementations.
 */
#if !defined( __CLEANUP_SEH ) && !defined( __CLEANUP_CXX ) && !defined( __CLEANUP_C )
# define __CLEANUP_C
#endif

#if defined( __CLEANUP_SEH ) && defined(__GNUC__)
#error ERROR [__FILE__, line __LINE__]: GNUC does not support SEH.
#endif

typedef struct ptw32_cleanup_t ptw32_cleanup_t;
typedef void (__cdecl *ptw32_cleanup_callback_t)(void *);

struct ptw32_cleanup_t
{
  ptw32_cleanup_callback_t routine;
  void *arg;
  struct ptw32_cleanup_t *prev;
};

#ifdef __CLEANUP_SEH
	/*
	 * WIN32 SEH version of cancel cleanup.
	 */

#define pthread_cleanup_push( _rout, _arg ) \
	{ \
	    ptw32_cleanup_t	_cleanup; \
	    \
	_cleanup.routine	= (ptw32_cleanup_callback_t)(_rout); \
	    _cleanup.arg	= (_arg); \
	    __try \
	      { \

#define pthread_cleanup_pop( _execute ) \
	      } \
	    __finally \
		{ \
		    if( _execute || AbnormalTermination()) \
		      { \
			  (*(_cleanup.routine))( _cleanup.arg ); \
		      } \
		} \
	}

#else /* __CLEANUP_SEH */

#ifdef __CLEANUP_C

	/*
	 * C implementation of PThreads cancel cleanup
	 */

#define pthread_cleanup_push( _rout, _arg ) \
	{ \
	    ptw32_cleanup_t	_cleanup; \
	    \
	    ptw32_push_cleanup( &_cleanup, (ptw32_cleanup_callback_t) (_rout), (_arg) ); \

#define pthread_cleanup_pop( _execute ) \
	    (void) ptw32_pop_cleanup( _execute ); \
	}

#else /* __CLEANUP_C */

#ifdef __CLEANUP_CXX

	/*
	 * C++ version of cancel cleanup.
	 * - John E. Bossom.
	 */

	class PThreadCleanup {
	  /*
	   * PThreadCleanup
	   *
	   * Purpose
	   *	  This class is a C++ helper class that is
	   *	  used to implement pthread_cleanup_push/
	   *	  pthread_cleanup_pop.
	   *	  The destructor of this class automatically
	   *	  pops the pushed cleanup routine regardless
	   *	  of how the code exits the scope
	   *	  (i.e. such as by an exception)
	   */
      ptw32_cleanup_callback_t cleanUpRout;
	  void	  *	  obj;
	  int		  executeIt;

	public:
	  PThreadCleanup() :
	    cleanUpRout( 0 ),
	    obj( 0 ),
	    executeIt( 0 )
	    /*
	     * No cleanup performed
	     */
	    {
	    }

	  PThreadCleanup(
	     ptw32_cleanup_callback_t routine,
			 void	 *	 arg ) :
	    cleanUpRout( routine ),
	    obj( arg ),
	    executeIt( 1 )
	    /*
	     * Registers a cleanup routine for 'arg'
	     */
	    {
	    }

	  ~PThreadCleanup()
	    {
	      if ( executeIt && ((void *) cleanUpRout != (void *) 0) )
		{
		  (void) (*cleanUpRout)( obj );
		}
	    }

	  void execute( int exec )
	    {
	      executeIt = exec;
	    }
	};

	/*
	 * C++ implementation of PThreads cancel cleanup;
	 * This implementation takes advantage of a helper
	 * class who's destructor automatically calls the
	 * cleanup routine if we exit our scope weirdly
	 */
#define pthread_cleanup_push( _rout, _arg ) \
	{ \
	    PThreadCleanup  cleanup((ptw32_cleanup_callback_t)(_rout), \
				    (void *) (_arg) );

#define pthread_cleanup_pop( _execute ) \
	    cleanup.execute( _execute ); \
	}

#else

#error ERROR [__FILE__, line __LINE__]: Cleanup type undefined.

#endif /* __CLEANUP_CXX */

#endif /* __CLEANUP_C */

#endif /* __CLEANUP_SEH */

/*
 * ===============
 * ===============
 * Methods
 * ===============
 * ===============
 */

/*
 * PThread Attribute Functions
 */
PTW32_DLLPORT int pthread_attr_init (pthread_attr_t * attr);

PTW32_DLLPORT int pthread_attr_destroy (pthread_attr_t * attr);

PTW32_DLLPORT int pthread_attr_getdetachstate (const pthread_attr_t * attr,
					 int *detachstate);

PTW32_DLLPORT int pthread_attr_getstackaddr (const pthread_attr_t * attr,
				       void **stackaddr);

PTW32_DLLPORT int pthread_attr_getstacksize (const pthread_attr_t * attr,
				       size_t * stacksize);

PTW32_DLLPORT int pthread_attr_setdetachstate (pthread_attr_t * attr,
					 int detachstate);

PTW32_DLLPORT int pthread_attr_setstackaddr (pthread_attr_t * attr,
				       void *stackaddr);

PTW32_DLLPORT int pthread_attr_setstacksize (pthread_attr_t * attr,
				       size_t stacksize);

PTW32_DLLPORT int pthread_attr_getschedparam (const pthread_attr_t *attr,
					struct sched_param *param);

PTW32_DLLPORT int pthread_attr_setschedparam (pthread_attr_t *attr,
					const struct sched_param *param);

PTW32_DLLPORT int pthread_attr_setschedpolicy (pthread_attr_t *,
					 int);

PTW32_DLLPORT int pthread_attr_getschedpolicy (pthread_attr_t *,
					 int *);

PTW32_DLLPORT int pthread_attr_setinheritsched(pthread_attr_t * attr,
					 int inheritsched);

PTW32_DLLPORT int pthread_attr_getinheritsched(pthread_attr_t * attr,
					 int * inheritsched);

PTW32_DLLPORT int pthread_attr_setscope (pthread_attr_t *,
				   int);

PTW32_DLLPORT int pthread_attr_getscope (const pthread_attr_t *,
				   int *);

/*

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区免费大片| 日韩一区二区电影| 免费成人在线网站| 中文字幕色av一区二区三区| 欧美少妇xxx| 国产传媒久久文化传媒| 丝袜诱惑制服诱惑色一区在线观看| 26uuu精品一区二区在线观看| 在线观看日韩精品| 国产成人精品综合在线观看 | 亚洲综合丁香婷婷六月香| 欧美va在线播放| 欧美日韩亚洲综合| 99综合电影在线视频| 国产精品自拍网站| 视频在线在亚洲| 亚洲精品久久嫩草网站秘色| 亚洲国产精品ⅴa在线观看| 欧美成人在线直播| 欧美一区二区视频在线观看| 欧美午夜精品理论片a级按摩| av在线播放不卡| 国产不卡高清在线观看视频| 久久99久久久久久久久久久| 午夜久久久久久| 亚洲成在线观看| 一区二区三区日本| 亚洲激情图片qvod| 伊人开心综合网| 亚洲三级在线观看| 国产精品久久久久久福利一牛影视| 精品国产1区二区| 日韩欧美中文字幕制服| 777亚洲妇女| 欧美一区二区三区在线视频| 欧美日韩国产区一| 欧美绝品在线观看成人午夜影视| 欧美在线视频你懂得| 欧美网站一区二区| 欧美性猛交xxxx黑人交| 欧美熟乱第一页| 欧美日韩电影一区| 欧美一区二区三区在线| 日韩视频一区在线观看| 日韩欧美亚洲另类制服综合在线| 日韩欧美一级片| 精品91自产拍在线观看一区| 精品少妇一区二区三区视频免付费| 欧美电影免费观看完整版| 日韩欧美成人午夜| 亚洲精品在线一区二区| 国产亚洲综合色| 中文字幕不卡在线观看| 亚洲精品高清在线观看| 天堂蜜桃一区二区三区 | 国产精品羞羞答答xxdd| 国产成人免费视频网站 | 亚洲国产aⅴ成人精品无吗| 亚洲国产一区二区视频| 日本不卡视频一二三区| 国产精品一区在线观看乱码| 成人福利视频在线| 欧洲在线/亚洲| 欧美一区二区视频网站| 久久精品视频免费| 亚洲美女电影在线| 青青草伊人久久| 国产麻豆精品一区二区| 99久久综合色| 欧美欧美欧美欧美首页| 久久亚洲精品小早川怜子| 国产精品久久久99| 亚洲chinese男男1069| 韩国一区二区三区| 色综合久久99| 日韩一级黄色片| 亚洲欧美综合另类在线卡通| 午夜国产精品影院在线观看| 久久99国内精品| 99在线热播精品免费| 欧美一级视频精品观看| 国产精品久久三区| 日韩精品一二三四| av一区二区久久| 欧美大片在线观看一区二区| 亚洲天天做日日做天天谢日日欢| 日本在线播放一区二区三区| 国产黄色精品视频| 欧美精三区欧美精三区| 国产女同互慰高潮91漫画| 亚洲成人自拍一区| 99精品视频在线观看免费| 日韩午夜小视频| 亚洲乱码国产乱码精品精98午夜| 乱中年女人伦av一区二区| 色综合久久天天| 久久久久免费观看| 奇米色一区二区三区四区| 99精品欧美一区二区三区小说 | 欧美欧美欧美欧美| 国产精品家庭影院| 久久99国内精品| 欧美美女直播网站| 1区2区3区欧美| 国产一区二区成人久久免费影院 | 日韩在线a电影| 99久久久国产精品免费蜜臀| 欧美mv和日韩mv的网站| 天天综合天天综合色| 在线一区二区三区四区五区| 国产欧美日本一区二区三区| 蜜臀国产一区二区三区在线播放 | 日韩欧美黄色影院| 一二三区精品视频| 色综合天天视频在线观看 | 免费观看一级特黄欧美大片| 色素色在线综合| 成人欧美一区二区三区小说 | 久久综合色之久久综合| 日韩高清中文字幕一区| 欧美怡红院视频| 亚洲精品久久久蜜桃| 99久久久久久99| 成人欧美一区二区三区白人| 成人99免费视频| 国产精品欧美综合在线| 成人一区二区三区视频在线观看 | 麻豆国产一区二区| 宅男噜噜噜66一区二区66| 亚洲国产aⅴ天堂久久| 欧美午夜电影网| 一区二区三区美女视频| 色94色欧美sute亚洲线路一ni | 色94色欧美sute亚洲线路一久| 1000部国产精品成人观看| 成年人午夜久久久| 亚洲另类春色国产| 色婷婷综合久久| 亚洲图片欧美一区| 欧美视频一区在线观看| 亚洲va韩国va欧美va| 日韩一级二级三级| 国产一区二区三区国产| 欧美国产一区二区| 91社区在线播放| 亚洲国产日产av| 91精品国产麻豆| 激情欧美一区二区三区在线观看| 精品国产乱码久久久久久浪潮| 国产一区二区三区观看| 中文字幕久久午夜不卡| 色综合中文综合网| 石原莉奈在线亚洲三区| 欧美美女直播网站| 精品在线观看免费| 中文字幕精品一区二区精品绿巨人 | 中文字幕成人av| 在线观看日韩高清av| 偷偷要91色婷婷| 日韩天堂在线观看| 成人精品免费网站| 一区二区三区.www| 欧美xxxxxxxx| 成人精品免费网站| 日韩中文字幕亚洲一区二区va在线| 日韩一区二区精品| www.欧美日韩国产在线| 亚洲一区二区精品久久av| 欧美一区二区三区日韩视频| 国产精品一区二区你懂的| 亚洲人成网站影音先锋播放| 欧美日韩国产综合视频在线观看| 激情图区综合网| 亚洲美女一区二区三区| 日韩亚洲国产中文字幕欧美| 国产成人精品免费一区二区| 亚洲综合999| 久久欧美中文字幕| 91传媒视频在线播放| 国产一区二区三区| 亚洲午夜视频在线| 国产性色一区二区| 欧美影院精品一区| 成人a免费在线看| 蜜臀精品久久久久久蜜臀 | 国产三级精品三级| 欧美日韩情趣电影| 懂色av中文字幕一区二区三区 | 亚洲精品久久嫩草网站秘色| 欧美成人精品3d动漫h| 欧美最猛性xxxxx直播| 国产裸体歌舞团一区二区| 亚洲综合免费观看高清在线观看| 久久伊99综合婷婷久久伊| 欧美视频一区在线观看| 成人av在线观| 国模冰冰炮一区二区| 午夜欧美大尺度福利影院在线看| 一区精品在线播放| 精品盗摄一区二区三区|