线程的互斥锁
来源:互联网 发布:什么软件开网店最可靠 编辑:程序博客网 时间:2024/06/02 07:27
[头文件]
#include <pthread.h>
[注意]
互斥锁是非异步安全,也就是说在信号处理中使用互斥锁容易造成死锁
[创建]
/*
* @brief 静态创建并初始化互斥锁
* @param[in] PTHREAD_MUTEX_INITIALIZER 互斥锁结构常量
*/
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
/*
* @brief 初始化互斥锁
* @param[in|out] mutex 互斥锁
* @param[in] attr 互斥锁属性
* @NULL 默认属性
* @return 初始化结果
* @li 0 初始化成功
* @li !0 标准错误码
*/
int pthread_mutex_init(pthread_mutex_t * mutex, const pthread_mutexattr_t * attr);
[操作]
/*
* @brief 加锁
* @param[in|out] mutex 互斥锁
* @return 结果
* @li 0 成功
* @li !0 标准错误码
*/
int pthread_mutex_lock(pthread_mutex_t *mutex);
/*
* @brief 尝试加锁
* @param[in|out] mutex 互斥锁
* @return 结果
* @li 0 成功
* @li !0 标准错误码
*/
int pthread_mutex_trylock(pthread_mutex_t *mutex);
/*
* @brief 解锁
* @param[in|out] mutex 互斥锁
* @return 结果
* @li 0 成功
* @li !0 标准错误码
*/
int pthread_mutex_unlock(pthread_mutex_t *mutex);
[销毁]
/*
* @brief 释放互斥锁占用的所有资源
* @param[in|out] mutex 互斥锁
* @return 结果
* @li 0 成功
* @li !0 标准错误码
* @notes 销毁的时候,锁必须处于释放状态
*/
int pthread_mutex_destroy(pthread_mutex_t *mutex);
例子:
#include <stdio.h>
#include <pthread.h>
pthread_mutex_t mutex;
void *thread(void *arg)
{
int i = 0;
sleep(1);
pthread_mutex_lock(&mutex);
while (i++ < 5)
{
printf("this is thread!\n");
sleep(1);
}
pthread_mutex_unlock(&mutex);
return (void *)0;
}
int main(int argc, char **argv)
{
pthread_t id;
void *ret;
int i = 0;
pthread_create(&id, NULL, thread, NULL);
pthread_mutex_init(&mutex, NULL);
sleep(3);
pthread_mutex_lock(&mutex);
while (i++ < 5)
{
printf("this is main!\n");
sleep(1);
}
pthread_mutex_unlock(&mutex);
pthread_join(id, &ret);
return 0;
}
注意:编译时加上-lpthread,否则编译不过
- 线程的互斥锁
- 线程的互斥锁
- 线程的互斥锁
- 线程的同步--互斥锁
- 线程的互斥锁
- 线程的互斥锁
- 基本的线程互斥锁
- 线程--线程的生命周期
- Linux线程-互斥锁的用法
- 线程互斥锁的问题(线程中使用定时器信号)
- Linux线程浅析[线程的同步和互斥之线程互斥锁]
- 线程的
- 线程的
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- JAVA实现双向链表
- _com_util::ConvertBSTRToString BUG解决方案(转载)
- java相关基础知识
- Linux driver中device_create()
- 要用怎样的节奏追逐梦想?——《与时间同行》(6)
- 线程的互斥锁
- java面试知识大全
- 发送和读取数据
- alsa编程之播放"嘀嘀"音
- Poj 3181 Dollar Dayz
- MyEclipse8.0注册码
- 俄罗斯创业公司为ARM芯片开发X86软件模拟器
- 泛型的好处
- 继续小练sscanf----HDU 2024