gpt4 book ai didi

linux - 没有信号量的共享内存访问

转载 作者:行者123 更新时间:2023-12-02 09:00:41 25 4
gpt4 key购买 nike

在 linux 中使用共享内存 api,如果我有一个写入(由 A 进程)并且只有一个读取(由 B 进程),我还需要信号量吗?。有没有一个例子可以说明,在没有信号量的情况下使用共享内存会在 linux 中进入死锁状态。

最佳答案

你的问题有点奇怪。首先,您不需要使用信号量,因为还有其他同步方法。

其次,不使用信号量通常不会导致死锁(除非出于某种原因您有信号量保护锁或其他同步方法)。使用同步方法往往会导致死锁,而不是没有死锁。

然而,当您有作者和读者争用同一资源时,您可以拥有所谓的 Race Condition

现在针对一位作者和一位读者的问题:这可以使用互斥锁而不是信号量或任何其他数量的同步方法来完成。或者,如果您可以保证 B 进程的写入是原子的(即,如果被中断,它们不会使共享内存处于不一致状态),则不需要同步。后一种情况不太可能发生,除非共享内存可以通过一条指令更新(有时甚至还不够)。您最好选择安全路线并以某种方式锁定对共享内存的访问。

关于linux - 没有信号量的共享内存访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520669/

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