Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共4 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:如果几个策略同时对同一个extgbdata变量作累加操作,会否出错?

1楼
roadpeace 发表于:2015/5/14 14:18:23
例如  extgbdataset('a',extgbdata('a')+1);

打个比方今天发生一次开仓,我就加一,当几个策略同时执行这个(同时开仓),有没可能算错?
比如现在这个 extgbdata('a')=1,两个策略同时发生开仓,会不会算成了 =2?(就是说两个都是1+1=2),并且写进去结果

如果这个操作是有锁住记录的话应该是不会算错的,我就是问金字塔的系统上有没锁住

2楼
yukizzc 发表于:2015/5/14 14:52:35

那就+2了,这种全局变量是金字塔内部公用的,你所有代码对他的操作都是执行的。

你所谓锁住是要则么锁呢,同时开仓是指同一根k?那你不同策略周期是否都是同样的。

3楼
roadpeace 发表于:2015/5/14 15:02:07
我意思是,同一时间两个程序都发生这个extgbdataset('a',extgbdata('a')+1);
的话,会不会只加了1,因为不知道金字塔机制到底是怎样的。

比如说,如果是先读出来,然后再+1,写回去这个变量,由于同时,就有可能读出来的都是1,然后都是各自+1,就是都等于2了,所以同时写回去,就有可能是2

但是如果有锁记录,就变成是串行操作,先处理完一个再一个,就不会算错

用数据库语言来理解就是:select for update,
4楼
yukizzc 发表于:2015/5/14 15:44:12

会写2的,这个写入的速度远远比你所谓的同时来得快。你同一时刻的程序运行在内部还是有细微的前后的

共4 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01563 s, 3 queries.