gpt4 book ai didi

linux - 我们什么时候应该使用互斥锁,什么时候应该使用信号量

转载 作者:IT老高 更新时间:2023-10-28 12:23:43 27 4
gpt4 key购买 nike

什么时候应该使用互斥体,什么时候应该使用信号量?

最佳答案

这是我记得什么时候使用什么 -

信号量:当您(线程)想要 sleep 时使用信号量,直到其他线程告诉您醒来。信号量“向下”发生在一个线程(生产者)中,信号量“向上”(对于相同的信号量)发生在另一个线程(消费者)中例如:在生产者-消费者问题中,生产者想要休眠直到至少一个缓冲槽为空——只有消费者线程才能知道缓冲槽何时为空。

互斥:当您(线程)想要执行不应由任何其他线程同时执行的代码时,请使用互斥锁。 Mutex 'down' 发生在一个线程中,mutex 'up' 必须 稍后发生在同一个线程中。例如:如果您要从全局链表中删除一个节点,您不希望另一个线程在您删除该节点时使用指针。当你获取一个互斥体并忙于删除一个节点时,如果另一个线程试图获取相同的互斥体,它将进入休眠状态,直到你释放互斥体。

自旋锁:当您真的想使用互斥锁但不允许您的线程休眠时,请使用自旋锁。例如:操作系统内核中的中断处理程序绝不能休眠。如果是这样,系统将卡住/崩溃。如果需要从中断处理程序中插入一个节点到全局共享链表,获取一个自旋锁-插入节点-释放自旋锁。

关于linux - 我们什么时候应该使用互斥锁,什么时候应该使用信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4039899/

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