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::lwtlibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::lwt)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install lwt.5.6.1Edit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (lwt (>= 5.6.1))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile 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))typet
Type of Lwt mutexes
valcreate : ``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
lockreturns immediately -
if it is locked, then
lockwaits 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
valunlock :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.
valis_locked :t->bool
locked mutex returns whether mutex is currently locked
valis_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.
