gpt4 book ai didi

multithreading - 可重入锁 : pros and cons?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:39:05 24 4
gpt4 key购买 nike

在什么情况下人们希望使用可重入锁而不是普通锁?

最佳答案

简单/常规锁和可重入锁之间的主要区别在于,简单锁允许一个线程在给定的时间点获取锁,让所有其他线程等待,包括持有锁的线程,如果它尝试再次锁定。可重入锁允许同一个线程根据需要多次获取锁,前提是它们已经持有该锁,并使所有其他线程处于等待同一锁的队列中。

可重入锁通常在需要递归时很有用。想象一下,您有一个需要获取锁才能执行的递归函数。如果您使用简单的锁,您的第一个线程很容易发生死锁。递归的第一次迭代将成功获取锁,第二次迭代将尝试再次获取锁,但会永远阻塞。第二次迭代将等待第一次迭代解锁,但第一次迭代不会解锁,除非第二次迭代完成。

可重入锁在这里很有用,因为一旦线程持有锁,之后它可以根据需要多次锁定。唯一的问题是您的线程必须解锁的次数与锁定的次数一样多,这使其类似于计数信号量。

关于multithreading - 可重入锁 : pros and cons?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6638208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com