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,对旧代码仅需要新增回调,修改原始继承。

  • 相关阅读:
    读写锁
    MySQL事务处理和锁机制
    SQL注入攻击
    数据库三范式
    Slave延迟很大的优化方法总结(MySQL优化)
    MySQL主从复制的原理及配置
    消息总线的应用场景
    Java NIO通信框架在电信领域的实践
    逃逸分析
    BOM
  • 原文地址:https://www.cnblogs.com/yan1345/p/Solution_of_synchronization_of_linux_timer_processes.html
Copyright © 2011-2022 走看看