如何使用共享内存的信号量
How to use semaphores with Shared Memory
我编写了两个简单的进程—客户机和服务器(在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
相关文章:
- 删除旧的信号量系统V
- 父进程和子进程之间的 POSIX 信号量
- 访问共享内存而不使用易失性、std::atomic、信号量、互斥锁和自旋锁
- 多线程.如果我使用信号量,我可以在开始时创建很多线程还是应该只有几个线程?
- C/C++ - 用于按顺序打印数字的 sem_t 类型的单个信号量
- 单车道桥 使用信号量进行同步
- 用于 64 位/32 位 IPC 的 POSIX 信号量的替代方案?
- 这个餐饮哲学家问题(dpp)的解决方案是如何工作的?互斥体和信号量
- 发布信号量返回错误 6(无效句柄)
- 在 C Linux 中使用三个线程使用信号量同步按顺序打印 3 4 5 50 次
- 在使用 pthread 和信号量实现生产者-消费者问题时需要帮助
- 如何让一个线程继续,而另一个线程正在等待C++中的信号量
- 实现信号量
- 计算信号量还是互斥体?
- POSIX 信号量在高争用/负载下不起作用
- C++:提升:托管共享内存是否需要信号量锁
- 信号量的问题
- 锁、内存屏障、信号量之间的区别
- 共享内存与信号量同步
- 如何使用共享内存的信号量