关于pthread_mutex_lock的一些问题

时间:2010-06-23 15:15:53

标签: multithreading

当thread1已经获取对互斥锁对象的锁定时,如果thread2尝试获取同一互斥锁对象的锁定,则会阻止thread2。 这是我的问题: 1. thread2如何知道互斥对象是否已解锁? 2. thread2会在预定的时间间隔内尝试获取锁吗?

2 个答案:

答案 0 :(得分:1)

我感觉到对互斥体如何工作的误解。当线程2尝试获取已由线程1拥有的互斥锁时,尝试获取互斥锁的调用将不会返回直到互斥锁变为可用(除非您使用trylock()变量超时)。

因此,线程2不需要在那里循环并继续尝试使用互斥锁(除非您使用超时,因此您可以根据取消条件等其他条件中止尝试获取互斥锁。)

答案 1 :(得分:0)

这实际上取决于操作系统,但通常会发生的事情是thread2被挂起并放在由互斥锁维护的等待列表中。当互斥锁变为可用时,互斥锁等待列表中的线程将从列表中删除并返回到活动线程列表中。然后操作系统可以像通常那样安排它。 thread2完全静止,直到它可以获取互斥锁。