In code
fn do_something_under_lock(some_bool_mutex: &Mutex<bool>) {
do_something_before_lock();
let some_bool = some_bool_mutex.lock().unwrap();
do_something_with_some_bool(some_bool);
do_something_after_lock();
}
will lock be released only after do_something_after_lock();
?(or maybe compiler can prove that we don't need long lock time and decrease it?)
If lock will be released only after do_something_after_lock();
, can we release lock earlier by wrapping lock()
into own scope, like
fn do_something_under_lock_in_scope(some_bool_mutex: &Mutex<bool>) {
do_something_before_lock();
{
let some_bool = some_bool_mutex.lock().unwrap();
do_something_with_some_bool(some_bool);
}
do_something_after_lock();
}
Is wrapping into scope the best way to tell compiler what we want, or should we use some other way, like drop
or something?