zoukankan      html  css  js  c++  java
  • 第七讲 临界区保护(关闭调度)

    第七讲 临界区保护
    临界资源:
    临界资源是指一次仅允许一个线程访问的共享资源。他可以是一个具体的硬件设备,也可以是一个变量,一块缓冲区。
    不论是硬件临界资源还是软件临界资源,多个线程必须互斥的对他们进行访问。
    临界区:
    每个线程中访问(操作)临界资源的那段代码称为临界区(Critical Section),我们每次只允许一个线程进入临界区。
    临界区保护方法:
    1.关闭系统调度保护临界区
    (1)禁止调度
    void thread_entry(void *parameter)
    {
    while(1)
    {
    rt_enter_critical();//调度器上锁,禁止线程切换,仅响应中断
    临界区
    rt_exit_critical();//调度器解锁
    }
    }
    (2)关闭中断(更暴力)
    因为所有线程的调度都是建立在中断基础之上的,关闭中断后,自然就无法进行线程切换,线程也不会对其他线程抢占。
    void thread_entry()
    {
    rt_base_t level;
    while(1)
    {
    level=rt_hw_interrupt_disable();//关闭中断
    临界区
    rt_hw_interrupt_enable(level);//开启中断
    }
    }
     
    2.互斥特性保护临界区
    信号量,互斥量
  • 相关阅读:
    URL参数加密专用
    错误
    js学习类
    .net第一个服务器控件
    javascript中的call()和apply()方法 原创实例
    FIS使用技巧
    自定义参数表单URL参数处理
    避免编写解决"不存在"问题的代码
    从 1.1.0 升级到 1.2.0 的注意事项
    jquery常用插件,应用解析
  • 原文地址:https://www.cnblogs.com/freyluo/p/10983763.html
Copyright © 2011-2022 走看看