Now in concluding this journey, I provide the following function for executing functions on specified threads:
function onthread(f::F, id::Int) where {F<:Function}
    t = Task(nothing)
    @assert id in 1:nthreads() "thread $id not available!"
    @threads for i in 1:nthreads()
        if i == id
            t = @async f()
        end
    end
    fetch(t)
end
Anyone having single threaded applications involving tasks can speed things up with it. With the above (contrived) example you can do
julia> @btime machin_series(10_000, handover=true)
  158.559 ms (10000 allocations: 156.25 KiB)
3.1414926535900345
julia> @btime onthread(2) do; machin_series(10_000, handover=true); end
  2.467 ms (10045 allocations: 160.48 KiB)
3.1414926535900345
More realistically I still get dramatic speedups of my simulation benchmarks with this:
| date | channel [ms] | dice [ms] | heating [ms] | action [μs] | comment | 
|---|---|---|---|---|---|
| 2020-02-20 | 42.431 | 296.433 | 59.631 | 38.156 | before | 
| 2020-02-27 | 44.630 | 36.641 | 5.091 | 8.269 | dice and heating onthread(2) | 
Maybe, now you can see why I went after this thing  .
 .
You can just copy/paste onthread from above or get it from my repo by
] add "https://github.com/pbayer/ThreadingExperiments.jl"
julia> using ThreadingExperiments
Its compat is Julia 1.3. Maybe someone of you could test (by copying from this thread) if this thing works as well in Julia 1.2 and below.