如何使用共享内存的信号量

How to use semaphores with Shared Memory

本文关键字:信号量 内存 共享 何使用      更新时间:2023-10-16

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

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

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

例如

,如果"服务器"写入到第10-15行,"客户端"不能访问这些行,但它可以从其余行读取。

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

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

Thanks in advance

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