package moonpool
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=3efd095c82a37bba8c7ab6a2532aee3c445ebe1ecaed84ef3ffb560bc65e7633
sha512=e4bcab82e6638299c2d0beb1dbf204f7b43379a5387418c6edff85b9bf90c13ad1bdd8eb44b69cd421268d1bc45bcf918bcf77e1c924348211ac27d6643aac78
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.