Skip to content

Commit 29af4f0

Browse files
committed
Update containers
1 parent 3fc7582 commit 29af4f0

2 files changed

Lines changed: 25 additions & 13 deletions

File tree

src/resources/containers.jl

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,6 @@ const Request = Put
3838

3939
Request(res::Resource; priority::Int=0) = Put(res, 1; priority=priority)
4040

41-
macro request(res, req, expr)
42-
esc(quote
43-
$req = Request($res)
44-
$expr
45-
if state($req) == SimJulia.triggered
46-
@yield Release($res)
47-
else
48-
cancel($res, $req)
49-
end
50-
end)
51-
end
52-
5341
function request(func::Function, res::Resource; priority::Int=0)
5442
req = Request(res; priority=priority)
5543
try

test/containers.jl

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,28 @@ con = Container(sim, 10.0; level=5.0)
5757
@coroutine my_producer(sim, con)
5858
run(sim)
5959

60-
60+
function source(sim::Simulation, server::Resource)
61+
i = 0
62+
while true
63+
i += 1
64+
yield(Timeout(sim, rand()))
65+
@process customer(sim, server, i)
66+
end
67+
end
68+
69+
function customer(sim::Simulation, server::Resource, i::Int)
70+
request(server) do req
71+
println(now(sim), ", customer $i arrives")
72+
yield(req | Timeout(sim, rand()))
73+
if state(req) != SimJulia.idle
74+
println(now(sim), ", customer $i starts being served")
75+
yield(Timeout(sim, rand()))
76+
end
77+
println(now(sim), ", customer $i leaves")
78+
end
79+
end
80+
81+
sim = Simulation()
82+
server = Resource(sim, 1)
83+
@process source(sim, server)
84+
run(sim, 10.0)

0 commit comments

Comments
 (0)