【发布时间】:2018-08-20 10:54:40
【问题描述】:
例如:
pthread_mutex_lock();
//Do something
sleep(1); //causes issues waiting while holding lock
pthread_mutex_unlock();
如果我们不想在互斥锁中使用睡眠,解决办法是什么
【问题讨论】:
-
解决办法是不睡觉。
-
更好的问题是“为什么有人会在互斥锁内调用 sleep()”。我完全不知道为什么有人会这样做。
-
要完整回答这个问题,我们首先需要知道为什么您在持有锁的同时调用 sleep()。
-
几十年来我编写了很多多线程应用程序,我记不起所有的设计细节,但我 100% 确定我从未在锁内调用过 Sleep()。
-
他调用 sleep 的最可能原因是确保互斥锁保持相当长的时间,以便他可以看到互斥锁如何工作/检查锁是否工作。在测试用例中调用
sleep并不少见,例如,如果您想测试如果某事花费的时间比预期的要长,会发生什么。
标签: c multithreading mutex thread-synchronization coverity