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

📄 ecpg-pthread-win32.h

📁 postgresql8.3.4源码,开源数据库
💻 H
字号:
/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/ecpg-pthread-win32.h,v 1.5 2007/11/15 21:14:45 momjian Exp $ *//* * pthread mapping macros for win32 native thread implementation */#ifndef _ECPG_PTHREAD_WIN32_H#define _ECPG_PTHREAD_WIN32_H#ifdef ENABLE_THREAD_SAFETY#ifndef WIN32#include <pthread.h>#elsetypedef struct pthread_mutex_t{	HANDLE		handle;	LONG		initlock;} pthread_mutex_t;typedef DWORD pthread_key_t;typedef bool pthread_once_t;#define PTHREAD_MUTEX_INITIALIZER	{ NULL, 0 }#define PTHREAD_ONCE_INIT			falsevoid		win32_pthread_mutex(volatile pthread_mutex_t *mutex);void		win32_pthread_once(volatile pthread_once_t *once, void (*fn) (void));#define pthread_mutex_lock(mutex) \	do { \		if ((mutex)->handle == NULL) \			win32_pthread_mutex((mutex)); \		WaitForSingleObject((mutex)->handle, INFINITE); \	} while(0)#define pthread_mutex_unlock(mutex) \	ReleaseMutex((mutex)->handle)#define pthread_getspecific(key) \	TlsGetValue((key))#define pthread_setspecific(key, value) \	TlsSetValue((key), (value))/* FIXME: destructor is never called in Win32. */#define pthread_key_create(key, destructor) \	do { *(key) = TlsAlloc(); ((void)(destructor)); } while(0)#define pthread_once(once, fn) \	do { \		if (!*(once)) \			win32_pthread_once((once), (fn)); \	} while(0)#endif   /* WIN32 */#endif   /* ENABLE_THREAD_SAFETY */#endif   /* _ECPG_PTHREAD_WIN32_H */

⌨️ 快捷键说明

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