zoukankan      html  css  js  c++  java
  • 【项目】解决Linux 定时器各进程同步问题

    Linux 定时器同步问题

    问题背景:系统进行电池性能测试时,未能满足24h供能。

    现象:进入低功耗的系统被A进程持续唤醒。

    分析:模块A使用CLOCK_BOOTTIME且写了wake_lock,BSP使用的CLOCK_BOOTTIME_ALARM,唤醒了BSP且wake_lock被占用导致系统无法立即休眠。

    根本原因:定时器不同步。

    解决方案

    现有条件:BSP定时发出UTC时间戳,各进程可订阅,BSP会定时唤醒系统,各进程进行工作。

    • A:进程停止写wake_lock。

      缺点: 存在进程A工作时被系统休眠情况,影响业务。

    • B:订阅BSP的UTC,回调进行时间同步,同时写wake_lock保证不被打断,工作完写wake_unlock。

      缺点:代码改动量大(之前使用的公共库不能继续使用,修改库将影响其他进程使用)

    最后选择方案B,并选择add Class代替修改。

    新建TimeA类,原Time改继承这个TimeA,对旧代码仅需要新增回调,修改原始继承。

  • 相关阅读:
    [POI2009]SLOElephants
    java回顾之集合概述
    java回顾之初始化
    java回顾之包装类
    java回顾之Set
    action,category
    java回顾之继承 二
    java回顾之TreeSet
    java回顾之final
    java回顾之继承
  • 原文地址:https://www.cnblogs.com/yan1345/p/Solution_of_synchronization_of_linux_timer_processes.html
Copyright © 2011-2022 走看看