Nuttx之互斥锁和信号量

本文详细介绍了Nuttx操作系统中互斥锁和信号量的使用方法,包括声明、初始化、加锁解锁等步骤,并给出了实际使用的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nuttx之互斥锁和信号量

这些天开始真正的接触嵌入式的操作系统了,慢慢地激动,但是激动之余,还是有些忐忑啊,虽然是来实习的,但是自己的能力也是想提高些的,所以就静下心来,仔细的研究人家源代码,看书,查函数API。从中学到的点东西,记录下来,方便自己,也方便需要的人。我记录的通俗易懂,因为我看到浅。

  • 先说互斥锁
    使用互斥锁的流程如下:
    声明一个互斥锁:
    pthread_mutex_t *name;
    初始化互斥锁:
    int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);
    const pthread_mutexattr_t *restrict attr一般如果没有特殊要求可以取NULL,
    接下来就是使用锁了,分两大部分:
    加锁、
    int pthread_mutex_lock(pthread_mutex_t *mutex);
    加锁后,别人就不可以访问这些临界变量了。
    解锁、
    int pthread_mutex_unlock(pthread_mutex_t *mutex);
    解锁后,别人就可以访问这些临界变量了。

  • 再说信号量
    信号量好像要和互斥锁一起用,不知道为什么?因为信号量相关的API有用到互斥锁的。
    声明信号量:
    pthread_cond_t *__cond
    初始化信号量:
    extern int pthread_cond_init __P ((pthread_cond_t *__cond,__const pthread_condattr_t *__cond_attr));
    发送信号量:
    pthread_cond_signal(pthread_cond_t *cond);
    等待信号量:
    pthread_cond_wait(&cond, &mut);
    重要的是:
    等待信号和发送信号之前最好都要上锁,等待信号之后,发送信号之后,也要解锁,因为上锁和解锁是成对出现的。
    eg1:
    pthread_mutex_lock(&mut);
    pthread_cond_signal(pthread_cond_t *cond);
    pthread_mutex_unlock(&mut);

特别的与pthread_cond_signal(pthread_cond_t *cond);类似的是
pthread_cond_broadcast (pthread_cond_t *cond);
eg2:
pthread_mutex_lock(&mut);
pthread_cond_wait(pthread_cond_t *cond);
pthread_mutex_unlock(&mut);
今天先记录这么点了。后续学点东西,还是会记录的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值