package moonpool
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=2c10792726b1c2e4987f0f2acca5c5c221ea5cc0a2b4c75ad4fd2709e32aab6f
sha512=801c399ae9b72dd5f84624cdee9bcbb56c5ed9c371001e00176e685686234b4135d69e48877412b25a5127ad59b729000d5422dad0c90e2ded2744b974dddeca
doc/moonpool.fib/Moonpool_fib/Main/index.html
Module Moonpool_fib.Main
Source
Main thread.
This is evolved from Moonpool.Immediate_runner
, but unlike it, this API assumes you run it in a thread (possibly the main thread) which will block until the initial computation is done.
This means it's reasonable to use Main.main (fun () -> do_everything)
at the beginning of the program. Other Moonpool pools can be created for background tasks, etc. to do the heavy lifting, and the main thread (inside this immediate runner) can coordinate tasks via Fiber.await
.
Aside from the fact that this blocks the caller thread, it is fairly similar to Background_thread
in that there's a single worker to process tasks/fibers.
This handles effects, including the ones in Fiber
.
main f
runs f()
in a scope that handles effects, including Fiber.await
.
This scope can run background tasks as well, in a cooperative fashion.
Same as main
but with room for optional arguments.