DRQ的全称是DeferredRequestQueue,意思是需要被延迟处理的Request队列,通常是因为有其他dependency未满足条件,无法马上运行。
1. DRQ有什么作用
Pipeline XML中定义了Node间的连接顺序,但并未定义Node的执行时机。
a.当一个Node有多个输出时,先执行后续的哪个Node?
b.当一个Pipeline中有多个Node实例时(比如多个OPE),先执行哪个?
这些问题由DRQ来解决,DRQ维护了ready,defered两个队列来管理Node的执行顺序。
2. DRQ在什么时候创建
CamX Session中有一个成员变量m_pDeferredRequestQueue,在初始化Session时会为该成员变量赋值。
也就是说,每个Session都会有一个DRQ实例。
CHISession::Initialize |---->Session::Initialize |-------->m_pDeferredRequestQueue = DeferredRequestQueue::Create(&deferredCreateData)