在 .Net Core 中,许多 I/O 方法都有异步版本,并且微软建议我们使用它们以获得更好的性能。
但是众所周知,异步方法无法在普通锁中正常工作,因为普通锁与线程相关。
例如,在 MemoryCache 中使用 ReadWriteLocker。当 MemoryCache 缺失时,我需要从数据库读取数据。 目前我知道解决此问题的两种方式:
1. 将异步数据库查询方法转换为同步方法,例如“Wait”或“.Result”。 2. 使用特殊锁,如 Redis 锁或一些非官方的 AsyncReaderWriteLocker。(我已经找到了其中一个,但我还没有阅读过其代码,因此我不知道详情、成本或新 bug)
那么回到标题,当我必须在锁中使用异步方法时,什么是最好的方式?我需要一些建议。 非常感谢阅读我的糟糕英语。
但是众所周知,异步方法无法在普通锁中正常工作,因为普通锁与线程相关。
例如,在 MemoryCache 中使用 ReadWriteLocker。当 MemoryCache 缺失时,我需要从数据库读取数据。 目前我知道解决此问题的两种方式:
1. 将异步数据库查询方法转换为同步方法,例如“Wait”或“.Result”。 2. 使用特殊锁,如 Redis 锁或一些非官方的 AsyncReaderWriteLocker。(我已经找到了其中一个,但我还没有阅读过其代码,因此我不知道详情、成本或新 bug)
那么回到标题,当我必须在锁中使用异步方法时,什么是最好的方式?我需要一些建议。 非常感谢阅读我的糟糕英语。
AsyncReaderWriterLock
。 - Matthew Watson