Experience with using SimJulia


#1

I am trying to follow along with one of the examples in the documentation of the library and in the code sample below I have the problem that the function silently “vanishes” at the line val = @yield ... and the simulation runs and “completes” in a misguided sense of the word. The println is just there fore debugging reasons.

I suspected that it might be the use of | that causes the problem, but that gets used in the test examples of the SimJulia package and these tests pass fine, so I don’t think it is that. I might be wrong and any help would be appreciated.

@resumable function client(sim::Simulation, teller::Resource, i::Int,
    priority::Int, time_in_bank::Float64)
    arrive = now(sim)
    @info "$(now(sim)), client $i has arrived"
    req = request(teller)
    patience = rand(Uniform(MIN_PATIENCE, MAX_PATIENCE))
    val = @yield req | timeout(sim, patience)
    println(val)
    wait = now(sim) - arrive
    if in(req, keys(result))
        @info "$(now(sim)) $name: Waited $wait"
        @yield timeout(sim, rand(Exponential(time_in_bank)))
        @info "$(now(sim)) $name: Finished"
        @yield release(res)
    else
        @info "$(now(sim)) reneged after $wait"
        @yield cancel(res, req)
    end
end