non_blocking_mutex 3.1.3

NonBlockingMutex is currently the fastest way to do expensive calculations under lock, or do cheap calculations under lock when concurrency/load/contention is very high
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::non_blocking_mutex::NonBlockingMutex;
use crate::non_blocking_mutex_task::NonBlockingMutexTask;
use std::sync::atomic::Ordering;

impl<
        'captured_variables,
        State,
        TNonBlockingMutexTask: NonBlockingMutexTask<State> + 'captured_variables,
    > NonBlockingMutex<'captured_variables, State, TNonBlockingMutexTask>
{
    pub fn has_running_tasks(&self, ordering: Ordering) -> bool {
        return self.task_count.load(ordering) != 0;
    }

    pub fn has_no_running_tasks(&self, ordering: Ordering) -> bool {
        return self.task_count.load(ordering) == 0;
    }
}