Cmud机器人编写小技巧之全局变量
昨天查看帮助做了一些研究,发现一些新东西,关于全局变量的对大家非常有用我这里就简单说说。Cmud机器人编写的时候会发现最大的问题就是由于多线程导致变量不稳定,有时候这对你的机器人造成非常多的隐患,但是为了跨触发进行信息交流还必须用变量存储信息。这里Cmud提供了全局变量的概念,全局变量存放的位置是cmud.ini文件,每次关闭cmud的时候会把内存中的全局变量值刷新到cmud.ini中,该变量提供了跨session级别的信息交流能力,而且使用上非常稳定。不过操作上比较麻烦,对全局变量进行写入只能通过函数%setglobal()以#call %setglobal("varid","varvalue")的形式进行变量写入,读取变量只能通过%getglobal("varid")的形式获得变量值,而且注意的是由于全局变量是整个cmud内部唯一的,所以我的做法是将变量id存放在一个list结构里面,每次操作的时候调用list结构,比如%getglobal(@globalvar.global1)来获得变量值,这样子你迁移到别的session的时候怕互相之间会有影响,把@globalvar.global1对应的值修改成另外一个值,存储的时候就不会互相影响了,需要跨session级别交流的话两个session里面@globalvar.global1值一样就实现了两个session对同一个全局变量进行读写。这里要注意的一点是由于全局变量没有加锁保护机制,所以跨session级别并行处理有时候会有bug,就和游戏里面钱庄存取钱的bug是一个道理,都是缺乏事务机制导致的。全局变量就讲到这里,欢迎大家探索! 完全看不明白 已经告别cmud 标记一下,慢慢理解 怎么理解CMUD变量sessions: one
globel@abc
var @abc
local $abc
sessions: two
globel@abc
var @abc
local $abc
怎么理解这些变量,在不同 sessions之间哪些会相互影响?
[ 本帖最后由 oolong 于 2010-8-31 05:49 PM 编辑 ] 不懂cmud中@和$有什么区别的小白飘过……ttk_03 CMud用过,有很多问题,程序在里面搞得复杂了,后来换了MUSHClient,一切变得美好起来了 cmud不好用啊。老死机
页:
[1]