Lin*_*umz 1 c++ linux memory shared semaphore
我使用SysV共享内存让两个进程相互通信。我不希望代码变得复杂,所以我想知道是否真的需要使用信号量来同步对共享内存的访问。在我的C / C ++程序中,父进程从共享内存中读取,子进程写入共享内存中。我编写了两个测试应用程序,以查看是否会产生诸如分段错误之类的错误,但我无法(Ubuntu 10.04 64bit)。即使两个进程在while循环中不停地写入同一共享内存也不会产生任何错误。
我希望有人对此事有经验,可以告诉我是否真的必须使用信号量来同步访问,或者我是否可以不进行同步。
谢谢
如果您不使用某种互斥锁,那么您将比其他任何事情更容易遭受与中断有关的怪异和计时错误。
假设您的孩子在被抢占时正在对共享内存进行写操作。共享内存现在处于“坏”状态-它的一部分与子进程的一种状态相关,其余与该状态之前的状态有关-父级可能在子进程之前被重新激活。然后,您已损坏状态。
您也许可以在短期内摆脱这种情况,但稍后会发现奇怪的错误。