- 精华
- 0
- 在线时间
- 49 小时
- UID
- 5564
- 积分
- 76
- 帖子
- 34
- 阅读权限
- 30
- 注册时间
- 2009-9-29
- 最后登录
- 2017-10-30
- 精华
- 0
- UID
- 5564
- 积分
- 76
- 帖子
- 34
- 主题
- 8
- 阅读权限
- 30
- 注册时间
- 2009-9-29
- 最后登录
- 2017-10-30
|
我用SetTBProfileString记录一些关易的变量值,但不知道SetTBProfileString对并发是怎么控制,如果遇到下面这种情况会出现问题吗?
比如我每天日内盯10个品种,并记录开仓的品种数量,如果有3个品种开仓后,之后产生信号的品种都不再交易,
假如目前profilestring里记录的值是2, 这时品种A与B在几乎同一时刻产生交易信号了,
A品种的公式应用中通过GetTBProfileString读取目前已开仓品种数,判断当前数目小于3,于是将品种数+1,并通过SetTBProfileString保存,
而就在A品种SetTBProfileString执行前,B品正好也通过GetTBProfileString读取数值,得到当前开仓品种为2,于是也将品种数+1,再SetTBProfileString保存,这时SetTBProfileString保存的值是3,
而实际上它应该为4,原来要控制3个品种开仓变成实际上开了4个品种了.
理论上讲会有这种情况发生吗?尽管实际上两个品种同时产生信号的概率很小。
那如果SetTBProfileString的并发机制不能实现我上述的控制要求,可有好的办法呢? |
|