File Coverage

blib/lib/Acme/CPANModules/OrderingAndRunningTasks.pm
Criterion Covered Total %
statement 3 3 100.0
branch n/a
condition n/a
subroutine 1 1 100.0
pod n/a
total 4 4 100.0


line stmt bran cond sub pod time code
1             package Acme::CPANModules::OrderingAndRunningTasks;
2              
3 1     1   441325 use strict;
  1         2  
  1         136  
4              
5             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
6             our $DATE = '2023-12-20'; # DATE
7             our $DIST = 'Acme-CPANModules-OrderingAndRunningTasks'; # DIST
8             our $VERSION = '0.001'; # VERSION
9              
10             our $LIST = {
11             summary => 'List of modules/tools to order multiple tasks (with possible interdependency) and running them (possibly in parallel)',
12             description => <<'_',
13              
14             This list reviews what tools are available on CPAN and in general to order
15             multiple tasks (with possible interdependency) and running them (possibly in
16             parallel).
17              
18             To specify dependency, you can use a graph then do a topological sort on it.
19             This will make sure that a task that depends on another is executed after the
20             latter. This will also check circular dependencies: if there is a circular
21             dependency, the graph becomes cyclical and will fail to sort topologically.
22             There are several modules to do topological sorting, among them: ,
23             , . There's also
24             .
25              
26             To run tasks in parallel, you can also represent the tasks and dependencies
27             among them using a graph, then separate the connected subgraphs. The subgraphs
28             do not connect to one another and thus you can run the tasks in a subgraph in
29             parallel with tasks in another subgraph. These modules can search and return
30             connected subgraphs: (`connected_components` method),
31             (`connected_components` function).
32              
33             Keyword: dependency ordering, parallel execution
34              
35             _
36             entries => [
37             {
38             module => 'Sub::Genius',
39             },
40             {
41             module => 'App::Dothe',
42             },
43             {
44             module => 'Zapp',
45             },
46             {
47             module => 'Minion::Job',
48             },
49             {
50             module => 'Sparrow',
51             },
52             ],
53             };
54              
55             1;
56             # ABSTRACT: List of modules/tools to order multiple tasks (with possible interdependency) and running them (possibly in parallel)
57              
58             __END__