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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sem.cpp

?? 一套linux下的C++開發庫
?? CPP
字號:
/***************************************************************************                          sem.cpp  -  description                             -------------------    begin                : Fri Jul 20 2001    copyright            : (C) 2001 by Mark    email                : alben@yeah.net ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************/#include <errno.h>#include <string.h>#include <stdarg.h>#include "sem.h"CSem::CSem(key_t tKey, int iSems, int iMode)				: m_iSems(iSems), m_tKey(tKey){	GetSem(iMode);}CSem::~CSem(){}void CSem::GetSem(int iMode){	if ((m_iSemId = semget(m_tKey, m_iSems, IPC_CREAT | IPC_EXCL | iMode)) < 0)	{		if (errno != EEXIST)			throw CSemException(strerror(errno), __FILE__, __LINE__);		if ((m_iSemId = semget(m_tKey, 0, iMode)) < 0)			throw CSemException(strerror(errno), __FILE__, __LINE__);				m_bCreate = false;		return;	}	m_bCreate = true;}void CSem::RemoveSem(){	union semun unSem;	if (semctl(m_iSemId, 0, IPC_RMID, unSem) < 0)		throw CSemException(strerror(errno), __FILE__, __LINE__);}bool CSem::SemOpWithUndo(int iSems, ...){	struct sembuf* pstSemBuf = new struct sembuf [iSems];		va_list ap;	va_start(ap, iSems);	for (int i = 0; i < iSems; i++)	{		pstSemBuf[i].sem_num = (unsigned short int)va_arg(ap, int);		pstSemBuf[i].sem_op = (short int)va_arg(ap, int);		pstSemBuf[i].sem_flg = SEM_UNDO;	}	va_end(ap);		if (semop(m_iSemId, pstSemBuf, iSems) < 0)	{		if (errno == EAGAIN || errno == EINTR)		{			delete [] pstSemBuf;			return false;		}					delete [] pstSemBuf;		throw CSemException(strerror(errno), __FILE__, __LINE__);	}		delete [] pstSemBuf;	return true;}bool CSem::SemOp(int iSems, ...){	struct sembuf* pstSemBuf = new struct sembuf [iSems];		va_list ap;	va_start(ap, iSems);	for (int i = 0; i < iSems; i++)	{		pstSemBuf[i].sem_num = (unsigned short int)va_arg(ap, int);		pstSemBuf[i].sem_op = (short int)va_arg(ap, int);		pstSemBuf[i].sem_flg = (short int)va_arg(ap, int);	}	va_end(ap);		if (semop(m_iSemId, pstSemBuf, iSems) < 0)	{		if (errno == EAGAIN || errno == EINTR)		{			delete [] pstSemBuf;			return false;		}				delete [] pstSemBuf;		throw CSemException(strerror(errno), __FILE__, __LINE__);	}		delete [] pstSemBuf;	return true;}bool CSem::Lock(){	struct sembuf* pstSemBuf = new struct sembuf [m_iSems];		for (int i = 0; i < m_iSems; i++)	{		pstSemBuf[i].sem_num = i;		pstSemBuf[i].sem_op = -1;		pstSemBuf[i].sem_flg = SEM_UNDO;	}		if (semop(m_iSemId, pstSemBuf, m_iSems) < 0)	{		if (errno == EAGAIN || errno == EINTR)		{			delete [] pstSemBuf;			return false;		}				delete [] pstSemBuf;		throw CSemException(strerror(errno), __FILE__, __LINE__);		}		delete [] pstSemBuf;	return true;}void CSem::Unlock(){	struct sembuf* pstSemBuf = new struct sembuf [m_iSems];		for (int i = 0; i < m_iSems; i++)	{		pstSemBuf[i].sem_num = i;		pstSemBuf[i].sem_op = 1;		pstSemBuf[i].sem_flg = SEM_UNDO;	}		if (semop(m_iSemId, pstSemBuf, m_iSems) < 0)	{		delete [] pstSemBuf;		throw CSemException(strerror(errno), __FILE__, __LINE__);		}		delete [] pstSemBuf;}void CSem::SetAll(int iSems, ...){	if (iSems != m_iSems)		throw CSemException("argument error.", __FILE__, __LINE__);		unsigned short int* pusiValue = new unsigned short int [iSems];		va_list ap;	va_start(ap, iSems);	for (int i = 0; i < iSems; i++)		pusiValue[i] = (unsigned short int)va_arg(ap, int);	va_end(ap);		semun unSem;	unSem.array = pusiValue;	if (semctl(m_iSemId, 0, SETALL, unSem) < 0)	{		delete [] pusiValue;		throw CSemException(strerror(errno), __FILE__, __LINE__);	}		delete [] pusiValue;}void CSem::SetValue(int iSemNum, int iValue){	semun unSem;	unSem.val = iValue;	if (semctl(m_iSemId, iSemNum, SETVAL, unSem) < 0)		throw CSemException(strerror(errno), __FILE__, __LINE__);}void CSem::GetAll(unsigned short int* pusiArray){	semun unSem;	unSem.array = pusiArray;	if (semctl(m_iSemId, 0, GETALL, unSem) < 0)		throw CSemException(strerror(errno), __FILE__, __LINE__);	}int CSem::GetValue(int iSemNum){	semun unSem;	int iValue = semctl(m_iSemId, iSemNum, GETVAL, unSem);	if (iValue < 0)		throw CSemException(strerror(errno), __FILE__, __LINE__);			return iValue;}void CSem::InitSem(){	unsigned short int* pusiValue = new unsigned short int [m_iSems];		for (int i = 0; i < m_iSems; i++)		pusiValue[i] = (unsigned short int)1;	semun unSem;	unSem.array = pusiValue;	if (semctl(m_iSemId, 0, SETALL, unSem) < 0)	{		delete [] pusiValue;		throw CSemException(strerror(errno), __FILE__, __LINE__);	}		delete [] pusiValue;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品私人影院| 蜜桃av一区二区| 久久国产麻豆精品| 成人a免费在线看| 欧美不卡一区二区三区四区| 一区二区三区四区激情| 国产精品一色哟哟哟| 欧美影院一区二区三区| 国产欧美一区视频| 久久99精品久久久久久| 色呦呦日韩精品| 国产亚洲婷婷免费| 美国精品在线观看| 欧美福利电影网| 亚洲一区二区五区| 99国产精品久久久| 中文字幕成人在线观看| 韩国在线一区二区| 欧美一级在线观看| 日韩 欧美一区二区三区| 色哟哟一区二区在线观看| 久久精品人人爽人人爽| 麻豆中文一区二区| 制服丝袜日韩国产| 日韩精品亚洲一区二区三区免费| 91麻豆免费观看| 日韩美女啊v在线免费观看| 国产精品一区久久久久| 精品福利在线导航| 麻豆91精品91久久久的内涵| 这里只有精品视频在线观看| 午夜av一区二区| 精品视频色一区| 亚洲一区二区黄色| 欧美喷潮久久久xxxxx| 亚洲成av人片观看| 91精品国产美女浴室洗澡无遮挡| 亚洲在线一区二区三区| 精品视频999| 日本不卡不码高清免费观看| 欧美一区二区在线看| 免费久久精品视频| 久久精品水蜜桃av综合天堂| 成人一二三区视频| 亚洲欧美一区二区在线观看| 91日韩精品一区| 亚洲一区二区三区国产| 日韩一级完整毛片| 国产精品自拍av| 国产精品午夜电影| 91老师片黄在线观看| 亚洲一区在线看| 69p69国产精品| 国产剧情在线观看一区二区| 亚洲国产经典视频| 欧美综合天天夜夜久久| 日韩制服丝袜先锋影音| 精品精品欲导航| 成人av免费在线播放| 一区二区三区欧美日韩| 在线不卡一区二区| 国产综合色在线视频区| 亚洲欧美日韩中文播放| 91精品国产综合久久福利软件| 国产美女在线精品| 一区二区三区在线影院| 日韩一区二区三| 91在线丨porny丨国产| 日韩精品一二区| 欧美国产成人精品| 91精品久久久久久蜜臀| 丰满白嫩尤物一区二区| 亚洲电影视频在线| 国产三级欧美三级| 欧美精品在线视频| 成人av网站大全| 美女视频一区二区| 亚洲精品日日夜夜| 国产午夜亚洲精品理论片色戒 | 久久激五月天综合精品| 国产精品素人一区二区| 欧美一区二区在线免费观看| www.66久久| 蜜桃在线一区二区三区| 亚洲免费色视频| ww久久中文字幕| 精品视频1区2区| 91视频在线观看| 国产专区欧美精品| 日韩精品乱码av一区二区| 国产精品青草综合久久久久99| 91精品欧美综合在线观看最新 | 亚洲黄一区二区三区| 久久综合九色综合欧美98| 欧美午夜精品一区| www.色综合.com| 国产jizzjizz一区二区| 毛片基地黄久久久久久天堂| 亚洲自拍都市欧美小说| 中文字幕一区二区5566日韩| 久久久久国产免费免费| 精品国产第一区二区三区观看体验 | 天堂精品中文字幕在线| 有坂深雪av一区二区精品| 欧美极品少妇xxxxⅹ高跟鞋| 欧美成人bangbros| 91精品国产品国语在线不卡| 欧美日韩高清在线播放| 欧美私模裸体表演在线观看| 91在线一区二区三区| 91欧美激情一区二区三区成人| 成人久久18免费网站麻豆 | 久久久久国色av免费看影院| 精品国偷自产国产一区| 日韩精品一区二区在线| 精品日韩在线一区| 精品久久久久久久一区二区蜜臀| 日韩小视频在线观看专区| 91麻豆精品国产91久久久久久久久| 在线观看日韩高清av| 欧美亚洲动漫精品| 欧美日韩色一区| 69p69国产精品| 日韩欧美国产综合在线一区二区三区| 日韩视频一区二区三区在线播放| 欧美一区二区三区精品| 精品国精品国产| 国产精品亲子伦对白| 亚洲天堂网中文字| 伊人一区二区三区| 天天综合色天天| 经典一区二区三区| 处破女av一区二区| 91亚洲精品久久久蜜桃网站 | 国产美女久久久久| www.色综合.com| 欧美视频三区在线播放| 日韩免费视频线观看| 国产调教视频一区| 亚洲视频一二区| 五月天网站亚洲| 国内精品自线一区二区三区视频| 国产精品羞羞答答xxdd| 97久久精品人人做人人爽50路| 在线观看91精品国产入口| 这里只有精品免费| 中文字幕电影一区| 性感美女极品91精品| 久久 天天综合| 91视频国产资源| 欧美一区二区三区视频在线观看| 久久久久久久久久久久电影| 亚洲三级小视频| 麻豆久久久久久久| jlzzjlzz亚洲日本少妇| 3d动漫精品啪啪1区2区免费| 国产午夜精品一区二区| 亚洲va在线va天堂| 丰满亚洲少妇av| 欧美一二三区在线观看| 亚洲欧美激情视频在线观看一区二区三区 | 日本欧美肥老太交大片| 成人v精品蜜桃久久一区| 欧美性猛交xxxxxx富婆| 久久久久久麻豆| 性久久久久久久| 91亚洲精华国产精华精华液| 日韩一区二区三区在线视频| 亚洲免费观看视频| 国内精品国产三级国产a久久 | 亚洲成av人在线观看| 成人美女视频在线观看18| 日韩一区二区三| 亚洲一区二区三区爽爽爽爽爽| 国产美女一区二区| 日韩精品一区二区三区在线 | 国产精品久久一卡二卡| 免费欧美日韩国产三级电影| 色8久久人人97超碰香蕉987| 国产精品毛片大码女人| 国产精品中文字幕欧美| 日韩欧美高清一区| 三级不卡在线观看| 欧美亚一区二区| 亚洲欧美自拍偷拍色图| 国产成人精品在线看| 精品国产一区二区亚洲人成毛片 | 欧美精品视频www在线观看 | 老司机精品视频一区二区三区| 91麻豆蜜桃一区二区三区| 国产精品久久久久婷婷二区次| 国产精品99久久久久久久女警| 欧美一区二区三区视频在线观看| 亚洲午夜免费福利视频| 91网页版在线| 国产精品蜜臀在线观看| 成人一级片在线观看| 中文字幕一区在线观看| 成人综合在线观看| 国产精品私人影院|