java.lang.Object
cn.wjybxx.btree.Task<T>
cn.wjybxx.btree.BranchTask<T>
cn.wjybxx.btree.branch.ParallelBranch<T>
- 所有已实现的接口:
ICancelTokenListener
- 直接已知子类:
Join,ServiceParallel,SimpleParallel
并行节点基类
定义该类主要说明一些注意事项,包括:
1.不建议在子节点完成事件中再次驱动子节点,避免运行
Task.execute()方法,否则可能导致其它task单帧内运行多次。
2.如果有缓存数据,务必小心维护。
3.并行节点都不能被内联- 作者:
- wjybxx date - 2023/11/26
-
字段概要
从类继承的字段 cn.wjybxx.btree.BranchTask
children -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明protected void模板类不重写enter方法,只有数据初始化逻辑protected voidexit()该方法在Task进入完成状态时执行 1.该方法与Task.enter(int)对应,通常用于停止Task.enter(int)中启动的逻辑。static <T> ParallelChildHelper<T> getChildHelper(Task<T> child) 获取child的helperprotected final voidinitChildHelpers(boolean allocCancelToken) 初始化child关联的helper 1.默认会设置为child的controlData,以避免反向查找开销。protected voidonChildRunning(Task<T> child, boolean starting) 1.并发节点通常不需要在该事件中将自己更新为运行状态,而是应该在Task.execute()方法的末尾更新 2.实现类可以在该方法中内联子节点void重置任务以便重新启动(清理运行产生的所有临时数据)protected final void从类继承的方法 cn.wjybxx.btree.BranchTask
addChildImpl, getChild, getChildCount, getChildren, getFirstChild, getLastChild, indexChild, isFirstChild, isLastChild, removeChildImpl, setChildImpl, setChildren, shuffleChild, visitChildren从类继承的方法 cn.wjybxx.btree.Task
addChild, canHandleEvent, checkCancel, enter, execute, exportControlFlowOptions, getBlackboard, getCancelToken, getControl, getControlData, getControlFlowOptions, getEnterFrame, getEntity, getExitFrame, getFlags, getGuard, getNormalizedStatus, getPrevStatus, getReentryId, getRunFrames, getSharedProps, getStatus, getTaskEntry, isActiveInHierarchy, isActiveSelf, isAutoListenCancel, isAutoResetChildren, isBlackboardPerChild, isBreakInline, isCancelled, isCancelTokenPerChild, isCheckingGuard, isCompleted, isExited, isFailed, isFailedOrCancelled, isInlinable, isInvertedGuard, isManualCheckCancel, isRunning, isSlowStart, isStillborn, isSucceeded, onActiveInHierarchyChanged, onCancelRequested, onChildCompleted, onEvent, onEventImpl, refreshActiveInHierarchy, registerCancelListener, removeAllChild, removeChild, removeChild, resetChildrenForRestart, resetForRestart, setActive, setAutoListenCancel, setAutoResetChildren, setBlackboard, setBlackboardPerChild, setBreakInline, setCancelled, setCancelToken, setCancelTokenPerChild, setChild, setChildCancelToken, setCompleted, setControl, setControlData, setEnterFrame, setExitFrame, setFailed, setFlags, setGuard, setGuardFailed, setInvertedGuard, setManualCheckCancel, setPrevStatus, setSharedProps, setSlowStart, setSuccess, stop, stop, stop, stopRunningChildren, template_checkGuard, template_execute, template_executeInlined, template_startChild, template_startHook, unsetChildCancelToken, unsetControl
-
构造器详细资料
-
ParallelBranch
public ParallelBranch() -
ParallelBranch
-
-
方法详细资料
-
resetForRestart
public void resetForRestart()从类复制的说明:Task重置任务以便重新启动(清理运行产生的所有临时数据)1. 和exit一样,清理的是运行时产生的临时数据,而不是所有数据;不过该方法是比exit更彻底的清理。 2. 钩子任务也应当被重置。 3. 与
Task.beforeEnter()相同,重写方法时,应先执行父类逻辑,再重置自身属性。 4. 有临时数据的Task都应该重写该方法,行为树通常是需要反复执行的。- 覆盖:
resetForRestart在类中Task<T>
-
beforeEnter
protected void beforeEnter()模板类不重写enter方法,只有数据初始化逻辑- 覆盖:
beforeEnter在类中Task<T>
-
exit
protected void exit()从类复制的说明:Task该方法在Task进入完成状态时执行 1.该方法与Task.enter(int)对应,通常用于停止Task.enter(int)中启动的逻辑。 2.该方法也用于清理部分运行时产生的临时数据。 3.一定记得取消注册的各种监听器。 -
getChildHelper
获取child的helper -
initChildHelpers
protected final void initChildHelpers(boolean allocCancelToken) 初始化child关联的helper 1.默认会设置为child的controlData,以避免反向查找开销。 2.建议在enter方法中调用。- 参数:
allocCancelToken- 是否分配取消令牌
-
resetHelpers
protected final void resetHelpers() -
onChildRunning
1.并发节点通常不需要在该事件中将自己更新为运行状态,而是应该在Task.execute()方法的末尾更新 2.实现类可以在该方法中内联子节点- 指定者:
onChildRunning在类中Task<T>- 参数:
starting- 是否是启动时调用,即首次调用
-