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

📄 pg_sema.h

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 H
字号:
/*------------------------------------------------------------------------- * * pg_sema.h *	  Platform-independent API for semaphores. * * PostgreSQL requires counting semaphores (the kind that keep track of * multiple unlock operations, and will allow an equal number of subsequent * lock operations before blocking).  The underlying implementation is * not the same on every platform.	This file defines the API that must * be provided by each port. * * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/storage/pg_sema.h,v 1.7 2004/12/31 22:03:42 pgsql Exp $ * *------------------------------------------------------------------------- */#ifndef PG_SEMA_H#define PG_SEMA_H/* * PGSemaphoreData and pointer type PGSemaphore are the data structure * representing an individual semaphore.  The contents of PGSemaphoreData * vary across implementations and must never be touched by platform- * independent code.  PGSemaphoreData structures are always allocated * in shared memory (to support implementations where the data changes during * lock/unlock). * * pg_config.h must define exactly one of the USE_xxx_SEMAPHORES symbols. */#ifdef USE_NAMED_POSIX_SEMAPHORES#include <semaphore.h>typedef sem_t *PGSemaphoreData;#endif#ifdef USE_UNNAMED_POSIX_SEMAPHORES#include <semaphore.h>typedef sem_t PGSemaphoreData;#endif#ifdef USE_SYSV_SEMAPHOREStypedef struct PGSemaphoreData{	int			semId;			/* semaphore set identifier */	int			semNum;			/* semaphore number within set */} PGSemaphoreData;#endiftypedef PGSemaphoreData *PGSemaphore;/* Module initialization (called during postmaster start or shmem reinit) */extern void PGReserveSemaphores(int maxSemas, int port);/* Initialize a PGSemaphore structure to represent a sema with count 1 */extern void PGSemaphoreCreate(PGSemaphore sema);/* Reset a previously-initialized PGSemaphore to have count 0 */extern void PGSemaphoreReset(PGSemaphore sema);/* Lock a semaphore (decrement count), blocking if count would be < 0 */extern void PGSemaphoreLock(PGSemaphore sema, bool interruptOK);/* Unlock a semaphore (increment count) */extern void PGSemaphoreUnlock(PGSemaphore sema);/* Lock a semaphore only if able to do so without blocking */extern bool PGSemaphoreTryLock(PGSemaphore sema);#endif   /* PG_SEMA_H */

⌨️ 快捷键说明

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