Lucky hour! Grab a free trial license — offer ends in 00:59:58. Claim now
The analyzer has detected an incorrect use of a mutex wrapper (std::unique_lock, etc).
Consider the following example:
std::unique_lock<std::mutex> lck;
lck.lock();
Here, in the second line, an exception 'std::system_error' will be thrown since there is no mutex associated with the wrapper. It should either be passed in the constructor:
std::unique_lock<std::mutex> lck(m, std::defer_lock);
lck.lock();
or initialized by the 'swap()' method:
std::unique_lock<std::mutex> lck_global(mtx, std::defer_lock);
....
std::unique_lock<std::mutex> lck;
lck.swap(lck_global);
lck.lock();
This diagnostic also detects cases where a critical section is declared but the mutex is not locked for some reason:
std::unique_lock<std::mutex> lck(m, std::defer_lock);
//lck.lock();
This diagnostic is classified as:
Was this page helpful?
Your message has been sent. We will email you at
If you do not see the email in your inbox, please check if it is filtered to one of the following folders: