seagate 发表于 2010-1-20 14:51:46

Cmud全局变量问题

有一个疑问不知道谁能解答一下。比如我做了一个机器人,有一堆状态变量,还有几个扑捉对话的窗口,
主窗口是pkuxkx,常常pkuxkx的机器人变量跑到chat窗口或者hubiao窗口,
而且变量还不对,机器人还自动用那个窗口的变量,直接导致机器人变傻。
好多次这种情况!不知道大家怎么避免这种情况发生的。
Cmud的windows配置独立是挺麻烦的。

sway 发表于 2010-1-20 15:34:04

cmud不知道,反正zmud的窗口之间常常乱窜,某个窗口的命令常常被窜到另一个窗口执行。。。

gocold 发表于 2010-1-20 16:20:49

这个问题搞清楚,bot会稳定很多

seagate 发表于 2010-1-20 16:26:33

我开始以为是#windows命令导致的,发现关系不是特别大,我每次#win到别的窗口,在重定位回来还是一样出问题

killunix 发表于 2010-1-20 16:49:22

你的变量是存在那个package?如果放在default配置里面或者你的几个窗口用能够同一个packages的话,可能会发生这种情况,可能是由多threads造成的

seagate 发表于 2010-1-20 18:49:36

几个窗口还能在不同Package里面?不过我试试把聊天记录的窗口disable看看有没有效果。反正不影响聊天记录。不过问题不好测试

[ 本帖最后由 seagate 于 2010-1-20 06:50 PM 编辑 ]

killunix 发表于 2010-1-20 19:15:50

可以在不同的package!但一般#capture 出来的窗口会继承主窗口package的配置,如果有多个threads在访问同一个variable,且你的variable是定义在root下面的话,就会发生这种情况,所以你把变量定义到某侧class里面试试看,不过,这个问题很难解决,除非用#section把你的语句包起来

seagate 发表于 2010-1-20 20:04:37

就是定义在class里面的,不过没用,但是你也不能所有代码都用#section包起来啊。那样不太对啊。

seagate 发表于 2010-1-20 20:08:45

你的意思是线程竞争导致全局变量同时在用,另外一个全局变量被迫写到别的地方去了?如果是这个原因的话,我看只有两个办法:一,减少全局变量。二,用到全局变量的地方,只要是修改的用#SECTION包起来,防止出现竞争。
页: [1]
查看完整版本: Cmud全局变量问题