【问题标题】:How to use semaphores with Shared Memory如何在共享内存中使用信号量
【发布时间】:2023-05-31 22:34:01
【问题描述】:

我编写了两个简单的进程 - 客户端和服务器(在 c++ - LINUX 中)共享相同的内存,一个写入它,另一个只读取它。 (从这个网站获取代码:

http://www.cs.cf.ac.uk/Dave/C/node27.html#SECTION002730000000000000000

问题: 我需要确保第二个进程不会从某个行/地址读取,而另一个进程正在写入它(但它可以从其他行/地址读取)。

例如,如果“服务器”正在写入第 10-15 行,则“客户端”无法访问这些行,但它可以从其余行中读取。

我知道我需要使用信号量,但我不知道如何将它与共享内存结合使用。 有关如何使用信号量的任何示例代码/帮助?

注意:我使用 SystemV IPC 而不是 POSIX。

提前致谢

【问题讨论】:

    标签: c++ linux shared-memory semaphore


    【解决方案1】:

    这份 16 页的文档应该可以帮助您理解和实现信号量:http://see.stanford.edu/materials/icsppcs107/23-Concurrency-Examples.pdf

    【讨论】:

      最近更新 更多