|
CGraph
|
CGraph的核心引擎,提供DAG类型分析、拓扑分析、动态图运行、全并发执行、全串行执行等能力 More...
#include <GDynamicEngine.h>


Protected Member Functions | |
| GDynamicEngine ()=default | |
| CStatus | setup (const GSortedGElementPtrSet &elements) override |
| CStatus | run () override |
| CVoid | mark (const GSortedGElementPtrSet &elements) |
| CVoid | analysisDagType (const GSortedGElementPtrSet &elements) |
| CVoid | commonRunAll () |
| CVoid | process (GElementPtr element, CBool affinity) |
| CVoid | afterElementRun (GElementPtr element) |
| CVoid | fatWait () |
| CVoid | parallelRunAll () |
| CVoid | serialRunAll () |
Protected Member Functions inherited from GEngine | |
| GEngine ()=default | |
| CVoid | link (const GSortedGElementPtrSet &elements) |
Private Attributes | |
| GElementPtrArr | total_element_arr_ |
| GElementPtrArr | front_element_arr_ |
| CSize | total_end_size_ = 0 |
| CSize | finished_end_size_ = 0 |
| CStatus | cur_status_ |
| internal::GEngineDagType | dag_type_ = { internal::GEngineDagType::COMMON } |
| std::mutex | lock_ |
| std::condition_variable | cv_ |
| std::mutex | status_lock_ |
Friends | |
| class | CAllocator |
Additional Inherited Members | |
Public Member Functions inherited from CObject | |
| CObject ()=default | |
| virtual CStatus | init () |
| virtual CStatus | destroy () |
| virtual | ~CObject ()=default |
Static Protected Member Functions inherited from GEngine | |
| static GElementPtrArr | getTopo (const GSortedGElementPtrSet &elements) |
| static CBool | isDag (const GSortedGElementPtrSet &elements) |
Protected Attributes inherited from GEngine | |
| UThreadPoolPtr | thread_pool_ { nullptr } |
| CSize | linked_size_ = 0 |
CGraph的核心引擎,提供DAG类型分析、拓扑分析、动态图运行、全并发执行、全串行执行等能力
|
explicitprotecteddefault |
|
protected |
element 运行完成处理
| element |
满足一下条件之一,则通知wait函数停止等待 1,无后缀节点全部执行完毕(在运行正常的情况下,只有无后缀节点执行完成的时候,才可能整体运行结束) 2,有节点执行状态异常

|
protected |
分析当前的信息,主要用于区分dag的类型
如果所有的信息中,只有一个是非linkable。则说明只有最后的那个是的,且只有一个开头 故,这里将其认定为一条 lineal 的情况 ps: 只有一个或者没有 element的情况,也会被算到 ALL_SERIAL 中去
|
protected |
动态图运行

|
protected |
动态图运行等待
遇到以下条件之一,结束执行: 1,执行结束 2,状态异常
|
protected |
记录当前 elements 数据信息
| elements |
|
protected |
并发的执行所有的element
主要适用于dag是纯并发逻辑的情况 直接并发的执行所有的流程,从而减少调度损耗 实测效果,在32路纯并行的情况下,整体耗时从 21.5s降低到 12.5s 非纯并行逻辑,不走此函数

|
protected |
element 运行element
| element | |
| affinity | 是否本地执行 |

|
overrideprotectedvirtual |
|
protected |
串行的执行所有element
如果分析出来 dag是一个链式的,则直接依次执行element 直到所有element都执行完成,或者有出现错误的返回值

|
overrideprotectedvirtual |
将所有注册进入 pipeline的内容,进行分析和解构
| elements |
Implements GEngine.

|
friend |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |