Module Lwt_mvar
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt
:DkSDKProject_DeclareAvailable(lwt CONSTRAINT "= 5.6.1" FINDLIBS lwt lwt.unix) DkSDKProject_MakeAvailable(lwt)
Add the
Findlib::lwt
library to any desired targets insrc/*/CMakeLists.txt
:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::lwt)
Click your IDE's
Build
button
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install lwt.5.6.1
Edit your
dune-project
and add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (lwt (>= 5.6.1))))
Then run:
dune build *.opam # if this fails, run: dune build
Edit your
<package>.opam
file and add:depends: [ # ... existing dependencies ... "lwt" {>= "5.6.1"} ]
Then run:
opam install . --deps-only
FINALLY, add the lwt
library to any desired (library)
and/or (executable)
targets in your **/dune
files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
lwt))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
lwt))
“Mailbox” variables implement a synchronising variable, used for communication between concurrent threads.
type
``'a t
The type of a mailbox variable. Mailbox variables are used to
communicate values between threads in a synchronous way. The type
parameter specifies the type of the value propagated from put
to
take
.
val
create :
'a
->
'a
t
create v
creates a new mailbox variable containing value v
.
val
create_empty : ``unit
->
'a
t
create ()
creates a new empty mailbox variable.
put mvar value
puts a value into a mailbox variable. This value will
remain in the mailbox until take
is called to remove it. If the
mailbox is not empty, the current thread will block until it is emptied.
take mvar
will take any currently available value from the mailbox
variable. If no value is currently available, the current thread will
block, awaiting a value to be put
by another thread.
val
take_available :
'a
t
->
'a
option
take_available mvar
immediately takes the value from mvar
without
blocking, returning None
if the mailbox is empty.
- since 3.2.0
val
is_empty :
'a
t
->
bool
is_empty mvar
indicates if put mvar
can be called without blocking.
- since 3.2.0