回复:全局DB块多用利弊

已锁定

一指禅_LYG

  • 帖子

    256
  • 精华

    0
  • 被关注

    3

论坛等级:侠士

注册时间:2021-06-24

普通 普通 如何晋级?

发布于 2021-09-02 17:01:00

3楼

展开查看
以下是引用Mr.小孙在2021-09-02 16:44:36的发言 >2楼

你说的有点难理解啊,

不要直接在其他FB、FC中修改其他DB,而是专门为每个DB增加一个到数个FC来读写DB里面的数据。

FB内部不使用全局DB,定义接口就行,是这意思把。但是FC里大部分都会用到全部变量或者M点啊,不明白。后面就更不明白了

以下是引用Zaxife在2021-09-02 15:33:59的发言 >1楼:他们说的是不要直接...

引用1楼详细内容:

他们说的是不要直接在其他FB、FC中修改其他DB,而是专门为每个DB增加一个到数个FC来读写DB里面的数据。然后FC可以根据当前其他FC状态来执行线程锁保证DB数据不会作乱。

这样就可以做到避免全局DB的概念。其实,全局DB在多线程(主程序、中断程序)环境下确实是风险很大的,及其容易造成数据不一致性结果不可预料(比如主程序在改写一个DB还没改完突然通讯中断来读取没改完的数据就会造成整个数据帧校验错误?比如for循环时突然中断改写for次数?)。

这些说法,都是来自c++的类、多线程 来的。

很多说法不能机械理解,少用不是说绝对不能用,特别是函数,保持函数的完整性封闭性,使用接口来处理输入输出,这些说法一般是用来保证大型程序安全的,比如说程序上到几千个网络,自己都忘记了前面函数是怎么编写的,这个时候要是函数封闭性很好,基本上放心调用就可以了,不需再纠结那个函数里使用了哪些资源会不会和现行的冲突。
规则应该有,也不能教条主义 :-)
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15707条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。