📄 ntdef.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 + -