美文网首页
使用Begin,End模拟加锁处理业务逻辑

使用Begin,End模拟加锁处理业务逻辑

作者: NemoHo | 来源:发表于2017-01-05 19:12 被阅读0次

需求:

对某一组在持续变化的数据进行一系列的组操作(show,delete,add......)
类似于加锁机制

问题:

在这一组操作过程中,数据本身也是在不停变化的(行车记录仪的视频是时时在录的),那么我们在操作过程中
是否要对这个过程中的数据的改变做出反应呢?
    是:
        1.用户本身可能只是想操作在这一组操作开始时的那些数据,而不是时时的数据集合。
        2.如果每次操作都要更新数据,对于性能来说是个考验(参考内容观察者模式对数据进行监控可以减缓这个问题)。
    否:
        1.数据的更新不能时时体现在界面上(可以通过标记的方式对已被修改的数据进行标记显示)
        2.会对用户操作一定的不一致的感觉(例如删除的数据还能够看到(同样可以通过标记的方式解决))

类加锁机制处理

begin--operation*n--end:
    1.用户进入某一组操作的入口:
        begin:获取数据,并进行数据的初始化操作(例如排序等),初始化各种操作标记集合(可以是int型集合,使用位运算来表示每个位置的元素的处理状态),同时将标记设置为begin状态。
    2.用户开始进行N次各种操作:
        operation:
            get:从begin中初始化并处理好的数据中获取指定的数据。
            delete:检查是否可被删除,如果可以将操作标记集合中对应位置的标记的对应删除的位设置为1。
            lock:检查是否可被加锁,如果可以将操作标记集合中对应位置的标记的对应加锁的位设置为1。
            ......
    3.用户退出该系列操作:
        end:此时遍历操作标记集合,将其中为1的位的对应元素进行实际的相应的操作,清空各种集合和状态,将标记设置为end状态。

相关文章

  • 使用Begin,End模拟加锁处理业务逻辑

    需求: 问题: 类加锁机制处理

  • 异常处理的写法

    ruby中使用begin rescue end语句描述异常处理 在ruby中,异常及其相关信息都是被作为对象来处理...

  • Redission分布式锁

    1,基本使用示例 使用Redission对业务的核心处理方法进行加锁处理; (1),引入依赖 (2),创建配置类 ...

  • js超简洁表格

    完整demo下载 显示效果 使用示例 html js 对象方法 init(begin,end) begin ...

  • 复合语句

    标签 begin ... end,loop,repeat,while允许使用标签 标签的规则如下:begin_la...

  • STL-sort

    ·包含头文件 升序:sort(begin,end,less ());降序:sort(begin,end,great...

  • 异常处理代码优化

    异常处理基本就是 begin/rescue/end的代码块,运用下面三个策略,代码结构就比较清晰。 优先使用顶层异...

  • 范围for

    自动识别数组。 识别那些有 .begin() 和 .end() 的容器。 使用基于自变量的查找 begin() 和...

  • 2019-05-28 ios touch触摸链

    1、UIView,begin向上传递begin-》beign-〉...-》end-〉end 2、UIContol,...

  • End And Begin

    有些故事还没讲完那就算了吧那些心情在岁月中已经难辨真假如今这里荒草丛生没有了鲜花好在曾经拥有你们的春秋和冬夏 早就...

网友评论

      本文标题:使用Begin,End模拟加锁处理业务逻辑

      本文链接:https://www.haomeiwen.com/subject/ucgzvttx.html