嵌入式学习(Day:27 线程2)

   线程控制:互斥与同步    (排他性访问,只能一个访问)
    1. 互斥

        概念:
    互斥 ===》在多线程中对临界资源的排他性访问。   (临界资源如:全局变量a)

    互斥机制 ===》互斥锁  ===》保证临界资源的访问控制。

    pthread_mutex_t   mutex;          mutex(互斥锁的英文,mutex在3-4g的内核空间中)
    互斥锁类型        互斥锁变量 内核对象

    框架:(互斥锁使用步骤)
      定义互斥锁 ==》初始化锁 ==》加锁 ==》解锁 ==》销毁   (加锁的原则:放入锁中的区域,尽可能的小;尽量不要放循环等很耗时的操作)

     1、定义互斥锁:
        pthread_mutex_t   mutex;

     2、初始化锁
        int pthread_mutex_init(
            pthread_mutex_t *mutex,
            const pthread_mutexattr_t *attr);
        功能:将已经定义好的互斥锁初始化。
        参数:mutex 要初始化的互斥锁
              atrr  初始化的值,一般是NULL表示默认锁
        返回值:成功 0
                失败 非零
     3、加锁:            (lock可能会阻塞,unlock 不会阻塞)(互斥锁是一种折中的方案,会丧失一点并发的性能)
        int pthread_mutex_lock(pthread_mutex_t *mutex);
        功能:用指定的互斥锁开始加锁代码
              加锁后的代码到解锁部分的代码属于原子操作,
              在加锁期间其他进程/线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值