#389·sonic

减少锁竞争

作者: RemiBardon创建于 2026年8月5日更新于 2026年8月25日
标签bugarea:performance

@baptistejamin在#372中提到, 索尼克有许多无用的锁,

编辑:** 当我说“无用的锁”,我主要是指“锁太久了”。 我有一种感觉,有些锁是完全不必要的,但大多数只是被锁了太久,强迫同时执行的任务没有正当理由等待......

例如"StoreKVPool::flush"将游泳池锁定在写出模式中,而它只需要读取权限. 这样一来,它就防止了似乎不必要的同时读法。 每次看门人运行时,所有KV读取被屏蔽,增加了飞行中查询的回复时间.

zz
// 获取访问锁定( 在屏蔽写入模式中), 并在上下文中引用
// 通知: 这样可以防止从任何上下文获取存储
让 access=自已. store access lock.write (. unwrap ());

如果让 Some( store) = self.pool.read (. unwrap (. get( key) {
//.

我可能漏掉了一些东西, 这只是一个例子.

内容来源: valeriansaliou/sonic