2011-09-23 52 views
0

例如我有一个资源锁。 因此,一个多线程函数检查它是否在访问资源前设置,那么如果它没有设置它多线程的基本问题

在检查和设置之间是否存在一个小的可能性,另一个线程会设置相同的锁?

+0

感谢您的所有答案 – sabof

回答

1

取决于你想如何工作。请阅读手册页mutex_lock。在这种情况下,检查锁是否被设置是多余的,因为设置的行为,互斥体会暂停线程,直到互斥体可用(并且因此任何类型的代码变得不必要)。

1

您不首先检查锁的状态,然后获取它。你所做的只是获得它,指明你不想阻止或等待它。如果该锁由另一个线程保存,该调用将立即失败。 “锁获取”调用是作为一个原子操作来实现的。

许多实现提供了一个特定的功能,实现了我上面描述的功能。