• 017_linux驱动之_信号量


    2. 信号量
    信号量(semaphore)是用于保护临界区的一种常用方法,只有得到信号量的进程才能执行临界区代码。
    当获取不到信号量时,进程进入休眠等待状态。
     
    定义信号量
    struct semaphore sem;
    初始化信号量
    void sema_init (struct semaphore *sem, int val);
    void init_MUTEX(struct semaphore *sem);//初始化为0
     
    static DECLARE_MUTEX(button_lock);     //定义互斥锁
     
    获得信号量
    void down(struct semaphore * sem);
    int down_interruptible(struct semaphore * sem); 
    int down_trylock(struct semaphore * sem);
    释放信号量
    void up(struct semaphore * sem);
     
     
    使用示例:
    1. 定义互斥锁信号量:
    017_linux驱动之_信号量
    2. 获取信号量
    017_linux驱动之_信号量
    在上面获取信号量中,因为我们定义的是互斥锁,所以当运行第一次down(&button_lock);时候可以往下运行,
    当第二次运行时候假如没有释放的话会进入休眠状态,不会往下运行了
     
    3. 释放信号量
    017_linux驱动之_信号量

    注:
    1. 定义信号量时候当然是全局定义了
    2. 获取信号量我们一般在open函数中使用
    3. 释放信号量我们可以在release函数中释放掉
    4. 从上面中我们就可以设置,一个应用程序只会打开一次,当打开第二次时候要正确运行的话需要删除第一个应用程序

  • 相关阅读:
    I帧/P帧/B帧---术语解释
    利用forwardInvocation实现消息重定向
    doubango地址配置
    ARC使用小结
    NSException异常处理
    Runtime of Objective-C
    perl脚本框架整理
    模块——Getopt::Long接收客户命令行参数和Smart::Comments输出获得的命令行参数内容
    Linux学习进阶示意图
    Linux——入门命令
  • 原文地址:https://www.cnblogs.com/luxiaoguogege/p/9690250.html
Copyright © 2020-2023  润新知