gpt4 book ai didi

c++ - 不同步读写SysV共享内存(使用信号量,C/C++,Linux)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:19 25 4
gpt4 key购买 nike

我使用 SysV 共享内存让两个进程相互通信。我不希望代码变得太复杂,所以我想知道我是否真的必须使用信号量来同步对共享内存的访问。在我的 C/C++ 程序中,父进程从共享内存中读取,子进程写入共享内存。我写了两个测试应用程序,看看我是否会产生某种错误,如段错误,但我不能(Ubuntu 10.04 64 位)。即使两个进程在 while 循环中不停地写入同一共享内存也不会产生任何错误。

我希望有人有这方面的经验,可以告诉我是否真的必须使用信号量来同步访问,或者我是否可以不使用同步。

谢谢

最佳答案

如果您不使用某种互斥锁,那么您将比其他任何事情都更容易将自己暴露在与中断相关的奇怪而美妙的计时错误中。

假设您的 child 正在写入共享内存,但它被抢占了。共享内存现在处于“坏”状态 - 它的一部分与子进程的一种状态有关,其余部分与之前的状态有关 - 并且您的 parent 可能会在 child 之前重新激活。然后,您的状态已损坏。

可能可以在短期内解决这个问题,但稍后您会发现奇怪的错误。

关于c++ - 不同步读写SysV共享内存(使用信号量,C/C++,Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3017275/

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