| 1 | program pipeline_tracking_demo |
| 2 | use fgof_jobs, only : & |
| 3 | FGOF_JOBS_SIGNAL_SCOPE_GROUP, & |
| 4 | attach_job, & |
| 5 | attach_pipeline_members, & |
| 6 | complete_job, & |
| 7 | configure_job, & |
| 8 | job_exit_result, & |
| 9 | job_is_finished, & |
| 10 | job_stop_result, & |
| 11 | make_job_spec, & |
| 12 | observe_wait_result, & |
| 13 | pipeline_member_count |
| 14 | use fgof_jobs_types, only : job_handle, job_spec |
| 15 | implicit none |
| 16 | |
| 17 | type(job_spec) :: spec |
| 18 | type(job_handle) :: handle |
| 19 | |
| 20 | spec = make_job_spec("pipeline-head", signal_scope=FGOF_JOBS_SIGNAL_SCOPE_GROUP) |
| 21 | call configure_job(handle, spec) |
| 22 | call attach_job(handle, 101) |
| 23 | call attach_pipeline_members(handle, [101, 102, 103]) |
| 24 | call observe_wait_result(handle, job_stop_result(20, pid=102, process_group=101)) |
| 25 | call complete_job(handle, job_exit_result(0, pid=101, process_group=101)) |
| 26 | call complete_job(handle, job_exit_result(0, pid=102, process_group=101)) |
| 27 | call complete_job(handle, job_exit_result(0, pid=103, process_group=101)) |
| 28 | |
| 29 | write (*, '(a,i0)') "members=", pipeline_member_count(handle) |
| 30 | write (*, '(a,l1)') "finished=", job_is_finished(handle) |
| 31 | end program pipeline_tracking_demo |
| 32 |