gpt4 book ai didi

c++ - 共享内存 C++ 读写同步

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:57 26 4
gpt4 key购买 nike

如果两个程序同时访问共享内存,一个写入它,另一个从它读取,共享内存会被破坏吗?

我有两个程序,一个将从服务器和网络获取一些数据并将解析后的数据保存到共享内存中,我有一个读取程序,它将读取直到最后保存的数据集。

例如,如果第一个程序从100台服务器采集了数据,当前在第101台服务器,则reader程序将读取到第100台服务器之前的所有数据。第 101 个数据完成后,读取器程序将读取第 101 个数据集。这里来自服务器的数据集可能有多个数据,如磁盘空间、负载等。那么这种访问会破坏共享内存中的数据吗?或者我这样做是否合适?

最佳答案

你描述的其实是一个常见的并发计算问题,叫做 Readers-writers

如果您在其他程序正在写入内存时尝试从内存中读取数据,您很可能会得到损坏的数据。您应该使用一种同步原语(锁、信号量、监视器...)来确保这种情况永远不会发生。

我推荐你看看The Little Book of Semaphores ,尤其是 4.2 读者-作者问题一章。

关于c++ - 共享内存 C++ 读写同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9463403/

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