我目前正在为一个应用程序进行原型设计,该应用程序在共享内存中维护共享资源,并且可以由单个编写器通过多个读取器(通常为4)读取来更新。读者和作者作为一个单独的过程运行。作者更频繁地更新共享内存比阅读它的读者更新。
共享资源是一个结构数组,每个结构都有一个锁以保护对它的访问。 write获取锁并为elements [i]写入最新值并释放锁。
struct Data
{
int a;
int b;
char[10]; c
Lock l;
};
struct Data elements[ 10000 ];
我面临以下挑战
1)Lock l应该具有最小的开销。 2)由于我们有很多读者,我正在寻找具有读者作家语义的东西。 3)如果其中一个进程崩溃,则应该正常释放锁。
有人可以指出一些有关这些的文献吗?如果您能分享解决类似挑战的经验,我将不胜感激。
我将在C ++中实现该解决方案 感谢。