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

📄 ntdef.cpp

📁 此程序适用于电力系统中的网关程序
💻 CPP
字号:
#include "ntdef.h"

/*====================================================================================
*                                                                                    
* Subroutine  : sem_init()                                                         
*                                                                                    
* Parameters  : 
*				 sem:   逻辑锁
*				 pshare:暂时没用
*				 value:
*                                                                                    
* Called from : 		                                                          
* 
* Description : 初始化逻辑锁
* 
* Return	   :  
*                                             
* Modification: 
*				 2003-07-10: 
*                                                                                     
*====================================================================================*/
int sem_init(sem_t *sem,int pshared,unsigned int value)
{
	sem->count = value;

	sem->hdl =  CreateSemaphore(NULL,value,value,NULL);

	if( sem->hdl ) 
	{
		return 0;
	}
	
	return  1;
}

/*====================================================================================
*                                                                                    
* Subroutine  : sem_destroy()                                                         
*                                                                                    
* Parameters  : 
*				 sem:   逻辑锁
*                                                                                    
* Called from : 		                                                          
* 
* Description : 关闭逻辑锁
* 
* Return	   :  
*                                             
* Modification: 
*				 2003-07-10: 
*                                                                                     
*====================================================================================*/
int sem_destroy( sem_t *sem)
{
	CloseHandle( sem->hdl);
	return 0;
}

int sem_wait(sem_t *sem)
{
	WaitForSingleObject(sem->hdl,INFINITE);
	sem->count --;
	return 0;
}

int sem_post(sem_t *sem)
{
	sem->count ++;
	ReleaseSemaphore(sem->hdl,1,NULL);
	return 0;
}

int sem_getvalue(sem_t *sem,int *val)
{
	
	WaitForSingleObject(sem->hdl,INFINITE);
	*val = (int) sem->count;
	ReleaseSemaphore(sem->hdl,1,NULL);
	
	return 0;
} 
int pthread_rwlock_init(pthread_rwlock_t  *rwptr,
						const pthread_rwlocatt_t *attr)
{
	sem_init(&rwptr->sem,0,1);
	return 0;
}

int pthread_rwlock_destroy(pthread_rwlock_t  *rwptr)
{
	sem_destroy(&rwptr->sem);
	return 0;
}


int pthread_rwlock_rdlock(pthread_rwlock_t  *rwptr)
{
	sem_wait(&rwptr->sem);
	return 0;
}

int pthread_rwlock_wrlock(pthread_rwlock_t  *rwptr)
{
	sem_wait(&rwptr->sem);
	return 0;
}

int pthread_rwlock_unlock(pthread_rwlock_t  *rwptr)
{
	sem_post(&rwptr->sem);
	return 0;
}

⌨️ 快捷键说明

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