#3878·candle

在张量操作中,多个读锁对存储的潜在死锁风险

作者: scaspin创建于 2026年8月12日更新于 2026年8月28日

多个张量操作(例如 binary_op)需要对底层存储进行两次(或多次)读锁,如果 selfrhs/kernel 的"其他"存储相同,并且在同一存储上存在并发的写锁请求,则可能会发生死锁。std-sync RwLock 在同一线程上对同一个存储进行两次读时,如果存在并发的写请求,则可能会发生死锁。由于 storage() 会获取一个读锁并返回一个保护器,因此以下示例来自 binary_ophttps://GitHub.com/huggingface/candle/blob/6f74e7c390c717f8fd34f23ce02aceb058173370/candle-core/src/tensor.rs#L101-L102,如果 selfrhs 相同,则底层存储和其锁将相同。

内容来源: huggingface/candle