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)
如果是非动态锁结构,也可以使用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)
- linux c 线程锁
- linux C 线程学习
- Linux C 线程(一)
- linux C线程杂记
- linux下c线程
- Linux C 线程等待
- Linux C 关闭线程
- linux c线程池
- Linux C线程池
- Linux c 开发 - 线程
- Linux C -线程编程
- Linux C 线程池
- C语言-LINUX线程
- linux c 线程池
- Linux C线程同步
- Linux C之多线程
- 【Linux c】线程入门
- Linux C进程、线程
- oracle 数据导入不同的表空间-dmp文件
- 硬盘分区表
- 获取字符串的像素长度
- 一个游戏程序员的学习资料
- explicit关键字的使用
- linux c 线程锁
- C#文件后缀名详解
- linux input输入子系统分析《四》:input子系统整体流程全面分析
- Spring学习之国际化支持
- Thread 1:signal SIGABRT 原因之一
- java.lang.IllegalArgumentException这个异常是字面 非法参数 通常情况为找不到文件等
- 来到CSDN
- 10件开发者和老板都要知道的HTML5的那些事
- Linux下的hostid