Run code while locking a mutex.
Synopsis
Declared in <sync.h>
#define WITH_LOCK(cs, code)
Description
Examples:
WITH_LOCK(cs, shared_val = shared_val + 1);
int val = WITH_LOCK(cs, return shared_val);
Note:
Since the return type deduction follows that of decltype(auto), while the deduced type of:
WITH_LOCK(cs, int i = 1; return i);
is int, the deduced type of:
WITH_LOCK(cs, int j = 1; return (j));
is &int, a reference to a local variable
The above is detectable at compile‐time with the ‐Wreturn‐local‐addr flag in gcc and the ‐Wreturn‐stack‐address flag in clang, both enabled by default.
Parameters
Name |
Description |
cs |
Mutex to lock while the code runs. |
code |
Statements to execute while holding the lock; its value is returned. |
Created with MrDocs