首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉勾
V2EX  ›  C/C++/Obj-C

一个小玩具--基于 DAG 图的任务依赖调度

  •  
  •   owenliang · 2018-02-23 11:59:09 +08:00 · 717 次点击
    这是一个创建于 390 天前的主题,其中的信息可能已经有所发展或是发生改变。

    task_schedule

    项目地址

    点我

    项目介绍

    基于 DAG 图的调度 DEMO,基于图数据结构与拓扑序列理论,实现一个任务调度类。

    输入

        /*
         *
         *             J O B 1
         *          /    \       \
         *        V      V      V
         *     JOB2  JOB3  JOB5
         *         \     /
         *         V   V
         *         JOB4
         */
    

    输出

    ---------------
    任务名:job1
    是否完成:NO
    (当前)依赖这些任务: job2  job3  job5 
    (当前)被这些任务依赖:
    任务名:job2
    是否完成:NO
    (当前)依赖这些任务: job4 
    (当前)被这些任务依赖: job1 
    任务名:job3
    是否完成:NO
    (当前)依赖这些任务: job4 
    (当前)被这些任务依赖: job1 
    任务名:job4
    是否完成:NO
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job2  job3 
    任务名:job5
    是否完成:NO
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    ---------------
    <<<<<<<<< 可执行待办任务列表:  job4  job5 
    >>>>>>>>>job4 被执行
    ---------------
    任务名:job1
    是否完成:NO
    (当前)依赖这些任务: job2  job3  job5 
    (当前)被这些任务依赖:
    任务名:job2
    是否完成:NO
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    任务名:job3
    是否完成:NO
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    任务名:job4
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job2  job3 
    任务名:job5
    是否完成:NO
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    ---------------
    >>>>>>>>>job5 被执行
    ---------------
    任务名:job1
    是否完成:NO
    (当前)依赖这些任务: job2  job3 
    (当前)被这些任务依赖:
    任务名:job2
    是否完成:NO
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    任务名:job3
    是否完成:NO
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    任务名:job4
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job2  job3 
    任务名:job5
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    ---------------
    <<<<<<<<< 可执行待办任务列表:  job2  job3 
    >>>>>>>>>job2 被执行
    ---------------
    任务名:job1
    是否完成:NO
    (当前)依赖这些任务: job3 
    (当前)被这些任务依赖:
    任务名:job2
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    任务名:job3
    是否完成:NO
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    任务名:job4
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job3 
    任务名:job5
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    ---------------
    >>>>>>>>>job3 被执行
    ---------------
    任务名:job1
    是否完成:NO
    (当前)依赖这些任务:
    (当前)被这些任务依赖:
    任务名:job2
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    任务名:job3
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    任务名:job4
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖:
    任务名:job5
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖: job1 
    ---------------
    <<<<<<<<< 可执行待办任务列表:  job1 
    >>>>>>>>>job1 被执行
    ---------------
    任务名:job1
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖:
    任务名:job2
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖:
    任务名:job3
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖:
    任务名:job4
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖:
    任务名:job5
    是否完成:YES
    (当前)依赖这些任务:
    (当前)被这些任务依赖:
    ---------------
    
    第 1 条附言  ·  2018-02-23 13:13:26 +08:00
    5 回复  |  直到 2018-03-01 15:54:31 +08:00
        1
    dakb   2018-02-23 16:11:33 +08:00
    消灭 0 回复惨案吧。。
        2
    owenliang   2018-02-23 16:18:49 +08:00
    @dakb 666
        3
    lovejoy   2018-02-23 17:44:38 +08:00
    @owenliang 你们的用途是?
        4
    owenliang   2018-02-23 18:20:00 +08:00
    @lovejoy 比如 hadoop 多轮计算。
        5
    owenliang   2018-03-01 15:54:31 +08:00
    继续完善了一轮,增加了多进程调度: https://github.com/owenliang/task_schedule

    后续会支持 YAML 配置拓扑,提供一个命令行工具供使用。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1269 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 17:40 · PVG 01:40 · LAX 10:40 · JFK 13:40
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1