我试图在共享内存中实现环形缓冲区。 我有一个监督过程和n个发电机过程。 管理程序进程跟踪生成器进程写入环形缓冲区的值。 让我们假设Ring缓冲区看起来像这样
- > [0] [1] [2] [3] [4] [5] ... [n]的 - >
如果没有其他进程写入[n],主管只能从[n]读取 如果没有其他进程写入[n]并且主管不从[n]读取,则生成器也只能写入[n]。 这是由信号量完成的。
现在,继承我的问题: 如果我有,假设有10个进程生成要写入循环缓冲区的数字,那么我的缓冲区实际上应该有多大以获得良好的读/写性能,例如:如何在读/写时获得最少的锁? 是否有任何一般规则,例如"如果你有10个进程写作使你的环形缓冲区大小10 * 2"或类似的东西?
我能想到的唯一明显的事情是缓冲区不应该很小。 答案不一定非常精确,任何一般的提示/经验都会受到赞赏。