画布 1
R13定时Wifi开关
  小米解决方案
    智能场景
    场景启动条件
      点击
      定时
      连接
        断开
        连上
    场景执行的任务
      关闭Wifi，N小时N分钟
      对联网设备进行断网操作
    场景执行完成后
      返回完成
  重启wifi & 定时wifi开关任务
    双开
    明确：两个任务分属于不同请求
    使用情景
      客户端同时执行两个请求
        基本上不出现，除非两个按钮做在一个界面
      两个客户端分别执行这两个请求
        luci服务器如何处理并发
          关键问题
          阻塞型
            顺序执行请求，不会出错
          多进程型
            每个进程独享内存空间
              局部变量不会相互影响
            可能会有临界区代码
          多线程
            临界区代码影响到局部变量pid
            多个线程共享内存空间
          临界区代码
      取消定时开关
        到点关闭前
          up
          判断是否到点
          正确做法：kill
        到点关闭时
          正确做法：kill,启动
        在关了之后
          正确做法：kill, 启动
        到点启动时
          正确做法：kill, 启动
        到点启动后
          up
          判断是否到点
          到点什么都不做
        down
      修改定时开关
        到点关闭前
          正确做法：kill,set
        到点关闭时
          正确做法：kill，set
        在关了之后
          正确做法：启动，set
        到点启动时
          正确做法：启动，set
        到点启动后
          set
    相关代码
      restart_wifi
      定时wifi
  实现策略
    策略一
      app传一个时间戳到服务器
      由服务器判断是否符合启动条件
        符合则执行任务
        不符合则计算启动时间
    策略二
      小米实现
      由app来判断启动时间
        启动时间 - 当前时间
        传递小时/分钟(/秒)
      再将启动时间传给服务器
      服务器负责定时执行任务
  验证: Nixio中fork函数调用linux的哪个函数实现
    fork()?
    vfork()?
    clone()?
    概要