【发布时间】:2017-07-10 23:35:02
【问题描述】:
上下文是这样的:
- 线程试图锁定已锁定的互斥体
- 线程进入休眠/阻塞状态
- 一段时间后,互斥锁被解锁
Q1) 那会发生什么?
线程会立即恢复运行吗?或者内核仍然会等待正在运行的线程消耗它的时间片并正常调度等待的线程?
Q2) 如果互斥锁没有永远解锁怎么办?内核如何决定让线程等待?
【问题讨论】:
-
闻起来像作业......或考试
-
如果互斥锁从未解锁,您的程序就会出现死锁,就内核而言,这是您的问题
-
@LPs NO - 这是一个面试问题。我认为内核会正常安排等待线程,并在重新运行之前再次检查互斥锁状态。但不确定。
-
@StoryTeller 我完全清楚这一点,这不是问题所在。问题是关于死锁/永远等待的实现细节。
-
@guardian 你对可能发生的事情的想法应该在你的问题中,而不仅仅是在评论不适中。它实际上会借给帖子的内容,并表现出努力和思考,而不仅仅是寻找答案。只是一个建议。
标签: c multithreading pthreads mutex wait