1
- mutable struct EagerTaskSpec
1
+ mutable struct DTaskSpec
2
2
f
3
3
args:: Vector{Pair{Union{Symbol,Nothing},Any}}
4
4
options:: NamedTuple
@@ -8,25 +8,25 @@ abstract type AbstractTaskQueue end
8
8
9
9
function enqueue! end
10
10
11
- struct EagerTaskQueue <: AbstractTaskQueue end
12
- enqueue! (:: EagerTaskQueue , spec:: Pair{EagerTaskSpec ,DTask} ) =
11
+ struct DefaultTaskQueue <: AbstractTaskQueue end
12
+ enqueue! (:: DefaultTaskQueue , spec:: Pair{DTaskSpec ,DTask} ) =
13
13
eager_launch! (spec)
14
- enqueue! (:: EagerTaskQueue , specs:: Vector{Pair{EagerTaskSpec ,DTask}} ) =
14
+ enqueue! (:: DefaultTaskQueue , specs:: Vector{Pair{DTaskSpec ,DTask}} ) =
15
15
eager_launch! (specs)
16
16
17
- enqueue! (spec:: Pair{EagerTaskSpec ,DTask} ) =
18
- enqueue! (get_options (:task_queue , EagerTaskQueue ()), spec)
19
- enqueue! (specs:: Vector{Pair{EagerTaskSpec ,DTask}} ) =
20
- enqueue! (get_options (:task_queue , EagerTaskQueue ()), specs)
17
+ enqueue! (spec:: Pair{DTaskSpec ,DTask} ) =
18
+ enqueue! (get_options (:task_queue , DefaultTaskQueue ()), spec)
19
+ enqueue! (specs:: Vector{Pair{DTaskSpec ,DTask}} ) =
20
+ enqueue! (get_options (:task_queue , DefaultTaskQueue ()), specs)
21
21
22
22
struct LazyTaskQueue <: AbstractTaskQueue
23
- tasks:: Vector{Pair{EagerTaskSpec ,DTask}}
24
- LazyTaskQueue () = new (Pair{EagerTaskSpec ,DTask}[])
23
+ tasks:: Vector{Pair{DTaskSpec ,DTask}}
24
+ LazyTaskQueue () = new (Pair{DTaskSpec ,DTask}[])
25
25
end
26
- function enqueue! (queue:: LazyTaskQueue , spec:: Pair{EagerTaskSpec ,DTask} )
26
+ function enqueue! (queue:: LazyTaskQueue , spec:: Pair{DTaskSpec ,DTask} )
27
27
push! (queue. tasks, spec)
28
28
end
29
- function enqueue! (queue:: LazyTaskQueue , specs:: Vector{Pair{EagerTaskSpec ,DTask}} )
29
+ function enqueue! (queue:: LazyTaskQueue , specs:: Vector{Pair{DTaskSpec ,DTask}} )
30
30
append! (queue. tasks, specs)
31
31
end
32
32
function spawn_bulk (f:: Base.Callable )
@@ -44,7 +44,7 @@ struct InOrderTaskQueue <: AbstractTaskQueue
44
44
InOrderTaskQueue (upper_queue) = new (upper_queue,
45
45
Set {DTask} ())
46
46
end
47
- function _add_prev_deps! (queue:: InOrderTaskQueue , spec:: EagerTaskSpec )
47
+ function _add_prev_deps! (queue:: InOrderTaskQueue , spec:: DTaskSpec )
48
48
# Add previously-enqueued task(s) to this task's syncdeps
49
49
opts = spec. options
50
50
syncdeps = get (Set{Any}, opts, :syncdeps )
@@ -53,15 +53,15 @@ function _add_prev_deps!(queue::InOrderTaskQueue, spec::EagerTaskSpec)
53
53
end
54
54
spec. options = merge (opts, (;syncdeps,))
55
55
end
56
- function enqueue! (queue:: InOrderTaskQueue , spec:: Pair{EagerTaskSpec ,DTask} )
56
+ function enqueue! (queue:: InOrderTaskQueue , spec:: Pair{DTaskSpec ,DTask} )
57
57
if length (queue. prev_tasks) > 0
58
58
_add_prev_deps! (queue, first (spec))
59
59
empty! (queue. prev_tasks)
60
60
end
61
61
push! (queue. prev_tasks, last (spec))
62
62
enqueue! (queue. upper_queue, spec)
63
63
end
64
- function enqueue! (queue:: InOrderTaskQueue , specs:: Vector{Pair{EagerTaskSpec ,DTask}} )
64
+ function enqueue! (queue:: InOrderTaskQueue , specs:: Vector{Pair{DTaskSpec ,DTask}} )
65
65
if length (queue. prev_tasks) > 0
66
66
for (spec, task) in specs
67
67
_add_prev_deps! (queue, spec)
@@ -74,26 +74,26 @@ function enqueue!(queue::InOrderTaskQueue, specs::Vector{Pair{EagerTaskSpec,DTas
74
74
enqueue! (queue. upper_queue, specs)
75
75
end
76
76
function spawn_sequential (f:: Base.Callable )
77
- queue = InOrderTaskQueue (get_options (:task_queue , EagerTaskQueue ()))
77
+ queue = InOrderTaskQueue (get_options (:task_queue , DefaultTaskQueue ()))
78
78
return with_options (f; task_queue= queue)
79
79
end
80
80
81
81
struct WaitAllQueue <: AbstractTaskQueue
82
82
upper_queue:: AbstractTaskQueue
83
83
tasks:: Vector{DTask}
84
84
end
85
- function enqueue! (queue:: WaitAllQueue , spec:: Pair{EagerTaskSpec ,DTask} )
85
+ function enqueue! (queue:: WaitAllQueue , spec:: Pair{DTaskSpec ,DTask} )
86
86
push! (queue. tasks, spec[2 ])
87
87
enqueue! (queue. upper_queue, spec)
88
88
end
89
- function enqueue! (queue:: WaitAllQueue , specs:: Vector{Pair{EagerTaskSpec ,DTask}} )
89
+ function enqueue! (queue:: WaitAllQueue , specs:: Vector{Pair{DTaskSpec ,DTask}} )
90
90
for (_, task) in specs
91
91
push! (queue. tasks, task)
92
92
end
93
93
enqueue! (queue. upper_queue, specs)
94
94
end
95
95
function wait_all (f; check_errors:: Bool = false )
96
- queue = WaitAllQueue (get_options (:task_queue , EagerTaskQueue ()), DTask[])
96
+ queue = WaitAllQueue (get_options (:task_queue , DefaultTaskQueue ()), DTask[])
97
97
result = with_options (f; task_queue= queue)
98
98
for task in queue. tasks
99
99
if check_errors
0 commit comments