gpt4 book ai didi

c - 等待互斥量的线程如何恢复运行?

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:43 24 4
gpt4 key购买 nike

上下文是这样的:

  • 一个线程试图锁定一个已经锁定的互斥锁
  • 线程进入休眠/阻塞状态
  • 一段时间后,互斥锁被解锁

Q1) 那么会发生什么?

线程会立即恢复运行吗?或者内核仍然会等待正在运行的线程消耗它的时间片并正常调度等待线程?

Q2)如果互斥量没有永远解锁怎么办?内核如何决定让线程一直等待?

最佳答案

Will the thread be immediately put back to running? Or kernel will still wait the running thread consume its time slice and schedule the waiting thread normally?

通常线程现在已准备好运行。在大多数系统上,如果有可用的内核,它将立即开始运行。如果不是,那么下次在任何内核上调用调度程序时都会考虑它。

What if the mutex is not unlocked forever? How does the kernel determine to keep the thread waiting?

通常,线程醒来后做的第一件事就是尝试锁定互斥量。如果失败,它会再次阻塞。某些实现会在特定线程准备好运行之前将互斥锁分配给特定线程,在这种情况下,线程会被互斥锁唤醒。

实现各不相同,可以做任何符合要求的事情。

关于c - 等待互斥量的线程如何恢复运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42365744/

24 4 0