linux各种锁笔记

1、内核态常用锁

A、struct mutex m_stMutex;

说明:该锁可以睡眠

mutex_init(&m_stMutex);
mutex_lock(&m_stMutex);

mutex_unlock(&m_stMutex);

B、其他待更新

2、用户态锁

A、文件锁

说明:适应于进程间保护临界资源;文件XX_LOCKFILE需要读写权限。

使用:

#define XX_LOCKFILE"/etc/.xxLock"

INT g_iLockFd = open(XX_LOCKFILE, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);

VOID _XX_Lock(INT iFd, SHORT sType)

{

//入参判断

struck flock stLock;

memset(&stLock, 0, sizeof(stLock));

stLock.l_type = sType;

stLock.l_whence = SEEK_SET;

stLock.l_start = 0;

stLock.l_len = 0;

if(0 > fcntl(iFd, F_SETLKW, &stLock))

{

//TO DO

}

return;

}

VOID _XX_UnLock(INT iFd)

{

//入参判断

struck flock stLock;

memset(&stLock, 0, sizeof(stLock));

stLock.l_type = F_UNLCK;

stLock.l_whence = SEEK_SET;

stLock.l_start = 0;

stLock.l_len = 0;

if(0 > fcntl(iFd, F_SETLKW, &stLock))

{

//TO DO

}

return;

}

VOID XX_ReadLock(INT iFd)

{

//入参判断

 _XX_Lock(INT iFd, F_RDLCK);

}

VOID XX_WriteLock(INT iFd)

{

//入参判断

 _XX_Lock(INT iFd, F_WRLCK);

}

VOID XX_ReadUnLock(INT iFd)

{

//入参判断

 _XX_UnLock(INT iFd);

}


VOID XX_WriteUnLock(INT iFd)

{

//入参判断

 _XX_UnLock(INT iFd);

}

B、线程锁

说明:适应于某个进程的线程间临界资源保护

使用:

pthread_mutex_t m_stMutex=PTHREAD_MUTEX_INITIALIZER;

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr)

int pthread_mutex_lock(pthread_mutex_t *mutex)

int pthread_mutex_unlock(pthread_mutex_t *mutex)

int pthread_mutex_trylock(pthread_mutex_t *mutex) //锁已经被占据时返回EBUSY而不是挂起等待。

int pthread_mutex_destroy(pthread_mutex_t *mutex)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值