============使用步骤===============
1.//初始化互斥锁,锁是默认打开的
pthread_mutex_init(&mutex,NULL);
2.//上锁 相当于P操作
pthread_mutex_lock(&mutex);
3.//解锁 相当于V操作
pthread_mutex_unlock(&mutex);
4. //销毁互斥锁
pthread_mutex_destroy(&mutex);
====================================
int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);
参数
mutex 初始化一个互斥锁。
attr 设置互斥量的属性,通常可采用默认属性,即可将 attr 设为 NULL
返回值 成功 --->0 !!!成功申请的锁默认是打开的
失败 --->非 0 错误码
注意
restrict是C语言中的一种限定符,意思是告诉编译器该对象已经被指针所引用
不能通过除该指针外的所有其他直接或者间接的方式修改该对象的内容
int pthread_mutex_lock(pthread_mutex_t *mutex);
mutex --->互斥锁地址
返回值 成功 --->0
失败 --->非 0 错误码
功能
对互斥锁上锁,若互斥锁已经上锁,则调用者一直阻塞,直到互斥锁解锁后再上锁
注意
谁上的锁,就要靠谁解锁 ,上锁之后不能被打断
int pthread_mutex_trylock(pthread_mutex_t *mutex);
用该函数时,若互斥锁未加锁,则上锁,返回 0
若互斥锁已加锁,则函数直接返回失败,即 EBUSY。
int pthread_mutex_unlock(pthread_mutex_t *mutex);
mutex --->互斥锁地址
返回值 成功 --->0
失败 --->非 0 错误码
功能
对指定的互斥锁解锁
int pthread_mutex_destroy(pthread_mutex_t *mutex);
参数
mutex --->互斥锁地址
返回值 成功 --->0
失败 --->非 0 错误码
功能
销毁指定的一个互斥锁,互斥锁在使用完毕后,必须要对互斥锁进行销毁,以释放资源
线程同步互斥
最新推荐文章于 2024-08-23 21:32:35 发布
本文详细介绍了C语言中pthread库中的互斥锁操作,包括初始化mutex,上锁(lock)、尝试性上锁(trylock),解锁以及销毁mutex的函数及其用法和注意事项。
摘要由CSDN通过智能技术生成