'What is disadvantage of calling sleep() inside mutex lock?
For example:
pthread_mutex_lock();
//Do something
sleep(1); //causes issues waiting while holding lock
pthread_mutex_unlock();
what is the solution if we don't want to use sleep inside mutex lock
Solution 1:[1]
As a rule of thumb, you usually (but not always) don't want to hold a mutex for a long period of time (otherwise, other threads locking the same mutex would wait too long), and a full second is a long period for a processor doing billions of elementary operations each second.
You might want to use condition variables (since pthread_cond_wait is atomically releasing the mutex), or do the sleep
(or some poll(2)...) outside of the locked region. You might even -on Linux- use pipe(7)-s -or the cheaper but Linux-specific eventfd(2)- to communicate between threads running event loops.
The coverity static source analyzer is heuristic and might give false alarms.
Take time to read a good Pthread tutorial.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |