У меня есть следующий код:
private static object _dbLock = new object();
public static void LoadData()
{
lock (_dbLock)
{
//Load data from the database
}
}
public static string ReadData(Guid key)
{
lock (_dbLock)
{
//Lookup key in data and return value
}
}
Я не хочу, чтобы люди могли читать данные во время загрузки из базы данных, поэтому я положил lock
в ReadData
. Тем не менее, прямо сейчас, если несколько человек звонят ReadData
в одно и то же время, сразу может запускаться только один вызов.
Есть ли способ разрешить одновременные вызовы ReadData
, но блокировать считыватели, когда выполняется LoadData
?