线程锁初始化: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 pthr
如果是非动态锁结构,也可以使用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 pthr