我正在编写用于C ++中数据缓存的模板库,在该模板库中,可以完成并发读取和并发写入,但不能针对同一键。可以在以下环境中解释该模式:
这样,如果线程从缓存中请求密钥但不存在,则可以为该唯一密钥启动锁定的计算。同时,其他线程可以检索或计算其他密钥的数据,但是试图访问第一个密钥的线程将被锁定等待。
主要约束条件是:
我的其他约束但已经解决的是:
我不确定为每个键使用1个互斥锁是否是实现此目的的正确方法,但我没有发现其他任何本质不同的方法。
您是否知道实现此目标的其他模式?或者您找到合适的解决方案?我不喜欢约有100个互斥锁的想法。(缓存大小约为100个键)