Module Lwt_mutex
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))
type
t
Type of Lwt mutexes
val
create : ``unit
->
t
create ()
creates a new mutex, which is initially unlocked
lock mutex
lockcs the mutex, that is:
-
if the mutex is unlocked, then it is marked as locked and
lock
returns immediately -
if it is locked, then
lock
waits for all threads waiting on the mutex to terminate, then it resumes when the last one unlocks the mutex
Note: threads are woken up in the same order they try to lock the mutex
val
unlock :
t
->
unit
unlock mutex
unlock the mutex if no threads is waiting on it.
Otherwise it will eventually removes the first one and resumes it.
val
is_locked :
t
->
bool
locked mutex
returns whether mutex
is currently locked
val
is_empty :
t
->
bool
is_empty mutex
returns true
if they are no thread waiting on the
mutex, and false
otherwise
with_lock lock f
is used to lock a mutex within a block scope. The
function f ()
is called with the mutex locked, and its result is
returned from the call to with_lock
. If an exception is raised from f,
the mutex is also unlocked before the scope of with_lock
is exited.