zoukankan      html  css  js  c++  java
  • 基于乐观锁的配置server与XServer的交互

      XServer与配置server,配置server保存有XServer的配置文件里的信息。

    怎样在项目启动时。让XServer从配置server中获取到自己的配置信息,并达到通信资源的节省与控制。


    通信例如以下:

    1. XServer与配置server都启动,没有先后顺序之分。初始配置server知道XServer的XServerHost和XServerPost,可是XServer不知道配置server的CfgHost和CfgPort;

    2. 配置server启动线程不停的向XServer发送信息Info1。信息Info1包括配置server的CfgHost和CfgPort。以及XServer的配置文件的版本XServerCfgVersion=V1;

    3. XServer收到CfgHost、CfgPort、XServerCfgVersion后。推断从本地存储的配置文件里自己的版本V2和V1的关系。假设V1=V2。向配置server发送NotRequestResource事件,意思是我不须要别的东西了,结束。假设V1!

      =V2,记录标记flag=true(初始flag=false);

    4. XServer连接配置server的类中启动一个线程不停的推断标记flag。假设flag=true,就向配置server发送RequestResource事件,意思是版本不一样,我要我的配置资源。假设flag=false。啥都不干。

    5. 配置server收到RequestResource事件,做两件事情,一是停止发送信息Info1。二是不停的向XServer发送它的配置资源信息Info2,Info2中除了XServer的配置资源信息外。还有配置server的CfgHost和CfgPort。

    6. XServer收到Info2后,将Info1和Info2都写入到本地配置文件里,之后全部的读取都从本地配置文件里读取,同一时候使flag=false,然后向配置server发送确认消息Info3

    7. 配置server收到Info3后。停止向XServer发送信息Info2,结束。


    注意问题:

    • 假如当XServer和配置server都在执行中。这时配置server修改了XServer的配置资源,事件触发这时配置server得不停向XServer发送Info1和Info2,直到收到确认Info3;

    • 假如XServer和配置server都在执行中,一是突然配置server断了,稍后重新启动。向XServer发送Info1,XServer收到后推断V1=V2。发送NotRequestResource,结束;二是突然XServer断了,分两种可能。断期间配置server中XServer的配置资源未改,重新启动XServer无碍。断期间配置资源修改了,一旦修改,执行上面的不停向XServer发送Info1和Info2。等到XServer重新启动,也能收到Info1和Info2,不影响系统。

    • 假如XServer收到Info1后,发送RequestResource事件。配置server收到RequestResource事件。停止了Info1发送。但Info2发送前

      – XServer断掉,分两种情况。一是配置serverCfgHost和CfgPort不变。配置server因为未收到确认Info3而一直发送Info2。重新启动XServer,XServer能收到Info2。这里加Info3确认能够。也能够在配置server端监听连接,有服务模块连接到它,它就向之发送Info1。这时上面的情况中当重新启动XServer。配置server检測到XServer连接到它了,发送Info1。二是期间配置serverCfgHost和CfgPort改变了,配置server因为未收到确认Info3而一直发送Info2,假设Info2中不带CfgHost和CfgPort,那么万一下次指不定什么时候XServer断开了,因为配置server的CfgHost和CfgPort改了,就再也连不上了;
      –配置server断掉了,重新启动配置server,它发送Info1。不影响系统。

  • 相关阅读:
    gcc 使用中常用的参数及命令
    Android build system & Android.mk 规范
    ndkgdb对java/native code联合调试
    Android NDK开发指南(一) Application.mk文件
    字符编码知识:Unicode、UTF8、ASCII、GB2312等编码 及 转换
    C & C++ 中值得注意的编译,链接,调试,错误及其原因
    JNI 调用规范
    Graphic 矢量图形的区域填充与缠绕规则
    Android NDK开发指南(二)Android.mk文件
    JNI 之二 :java & c/c++ 相互通信及调用
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7348984.html
Copyright © 2011-2022 走看看