source.count()返回值异常:inject生成n个Agent时on exit赋值变量为n-1
Source组件count()返回值少1的原因分析
- 触发时序不匹配:Source组件的
on exit区段触发时机是Agent即将离开Source、尚未完成离开流程的前置节点,而source.count()统计的是已经完成离开流程、正式进入模型流程的Agent总数。二者的时序差会导致计数差1。 - 计数更新逻辑滞后:每一个Agent触发
on exit的瞬间,当前Agent还没被计入source.count()的统计结果中。当第n个Agent触发on exit执行赋值语句时,只有前n-1个Agent完成了全流程离开动作,source.count()返回值就是n-1,最终变量赋值结果自然比实际生成数少1。 - 解决方案参考:如果需要统计已生成的Agent总数,可以将变量初始值设为0,在
on exit区段直接执行variable = variable + 1即可得到准确值;如果需要使用Source自带的计数接口,可以等所有Agent生成流程全部结束后再调用source.count(),此时返回值就是完整的n。
内容的提问来源于stack exchange,提问作者Luigi Aurilio
相关产品推荐
相关产品推荐

