以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 如果几个策略同时对同一个extgbdata变量作累加操作,会否出错? (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=78599) |
-- 作者:roadpeace -- 发布时间:2015/5/14 14:18:23 -- 如果几个策略同时对同一个extgbdata变量作累加操作,会否出错? 例如 extgbdataset(\'a\',extgbdata(\'a\')+1); 打个比方今天发生一次开仓,我就加一,当几个策略同时执行这个(同时开仓),有没可能算错? 比如现在这个 extgbdata(\'a\')=1,两个策略同时发生开仓,会不会算成了 =2?(就是说两个都是1+1=2),并且写进去结果 如果这个操作是有锁住记录的话应该是不会算错的,我就是问金字塔的系统上有没锁住 |
-- 作者:yukizzc -- 发布时间:2015/5/14 14:52:35 -- 那就+2了,这种全局变量是金字塔内部公用的,你所有代码对他的操作都是执行的。 你所谓锁住是要则么锁呢,同时开仓是指同一根k?那你不同策略周期是否都是同样的。 |
-- 作者:roadpeace -- 发布时间:2015/5/14 15:02:07 -- 我意思是,同一时间两个程序都发生这个extgbdataset(\'a\',extgbdata(\'a\')+1); 的话,会不会只加了1,因为不知道金字塔机制到底是怎样的。 比如说,如果是先读出来,然后再+1,写回去这个变量,由于同时,就有可能读出来的都是1,然后都是各自+1,就是都等于2了,所以同时写回去,就有可能是2 但是如果有锁记录,就变成是串行操作,先处理完一个再一个,就不会算错 用数据库语言来理解就是:select for update,
|
-- 作者:yukizzc -- 发布时间:2015/5/14 15:44:12 -- 会写2的,这个写入的速度远远比你所谓的同时来得快。你同一时刻的程序运行在内部还是有细微的前后的 |