Ho il seguente codice:blocco che permetterà più lettori in C#
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
}
}
Non voglio permettere alle persone di leggere i dati mentre viene caricato dal database, quindi ho messo un lock
in ReadData
. Tuttavia, adesso se più persone chiamano allo stesso tempo ReadData
, è possibile eseguire una sola chiamata alla volta.
C'è un modo per consentire le chiamate simultanee a ReadData
ma bloccare i lettori quando viene eseguito LoadData
?
Buono a sapersi. Roba forte! – joshgo
Sembra perfetto! Ho pensato che ci sarebbe qualcosa di simile in .NET Framework. –