linux c 线程锁

来源:互联网 发布:nba2konline隐藏数据 编辑:程序博客网 时间:2024/06/05 00:27
线程锁初始化:int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr)
如果是非动态锁结构,也可以使用PTHREAD_MUTEX_INITIALIZER赋值进行初始化。
线程锁销毁:int pthread_mutex_destroy(pthread_mutex_t *mutex)
锁:int pthread_mutex_lock(pthread_mutex_t *mutex)
解锁:int pthread_mutex_unlock(pthread_mutex_t *mutex)
try锁:int pthread_mutex_trylock(pthread_mutex_t *mutex)

类似的还有读写锁:
pthread_rwlock_init
pthread_rwlock_destroy
pthread_rwlock_rdlock
pthread_rwlock_wrlock
pthread_rwlock_unlock
pthread_rwlock_tryrdlock
pthread_rwlock_trywrlock
写锁锁住时,读锁和写锁都回阻塞;而读锁锁住时,写锁会阻塞,读锁可以成功。

条件变量:
使用锁时,还可以使用条件变量,阻塞等待条件发生,当条件发生时,进行信号量的通知,时阻塞的代码继续走下去,使用pthread_cond_wait进行条件阻塞,这时之前加的锁是被放开的,可以在条件改变的地方进行加锁,然后再改变条件和进行条件通知。
初始化:int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *attr)
销毁:int pthread_cond_destroy(pthread_cond_t *cond)
条件等待:int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
带时间参数的条件等待:int pthread_cond_timewait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *timeout)
条件通知:int pthread_cond_signal(pthread_cond_t *cond)
int pthread_cond_broadcast(pthread_cond_t *cond)
原创粉丝点击