MCPcopy Create free account
hub / github.com/ChunelFeng/CGraph / tutorial_multi_pipeline

Function tutorial_multi_pipeline

tutorial/T07-MultiPipeline.cpp:54–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

52
53
54void tutorial_multi_pipeline() {
55 GPipelinePtr pipeline_1 = GPipelineFactory::create();
56 GPipelinePtr pipeline_2 = GPipelineFactory::create();
57 GPipelinePtr pipeline_3 = GPipelineFactory::create();
58
59 /**
60 * 设置个别pipeline的内部 thread pool 资源信息,用以减少整体资源占用(可选)
61 * 这里主要是为了说明,多个pipeline一起运行的时候,可以通过接口,针对个别pipeline进行调度资源的设置
62 */
63 UThreadPoolConfig config;
64 config.default_thread_size_ = 4;
65 config.max_thread_size_ = 4;
66 config.monitor_enable_ = false;
67 UThreadPool pool(true, config); // 开辟一个4个线程的线程池,直接 init,并且参数设置为 config
68
69 /**
70 * 本例中,pipeline1 和 pipeline2 的并发逻辑相对简单
71 * 通过如下接口,将这两个pipeline中的调度资源,修改为同一个线程池。
72 * ps:注意,必须在 pipeline init之前,先init传入的线程池
73 */
74 pipeline_1->setSharedThreadPool(&pool);
75 pipeline_2->setSharedThreadPool(&pool);
76
77 /**
78 * 经过上述的设置,pipeline1 和 pipeline2 共享同一个线程池,去调度其中的dag逻辑
79 * pipeline3 没有设定,故使用自带的默认线程池完成自己的调度逻辑
80 */
81 auto result1 = async_pipeline_1(pipeline_1);
82 auto result2 = async_pipeline_2(pipeline_2);
83 auto result3 = async_pipeline_3(pipeline_3);
84
85 result1.wait();
86 result2.wait();
87 result3.wait();
88
89 GPipelineFactory::clear();
90}
91
92
93int main() {

Callers 1

mainFunction · 0.70

Calls 7

createFunction · 0.85
async_pipeline_3Function · 0.85
setSharedThreadPoolMethod · 0.80
waitMethod · 0.80
async_pipeline_1Function · 0.70
async_pipeline_2Function · 0.70
clearFunction · 0.50

Tested by

no test coverage detected