У меня есть пул соединений с файловым сервером. (для кэширования подключенных файловых серверов) Теперь, если в пуле есть 100 открытых подключений, я хочу очистить через некоторое время.Pooling: Cleanup Pool
Я бы сделал уборку через 15 мин. (например, закрыть 20% активных соединений после 15 минут бездействия)
Для этого мне нужно запомнить временную метку последнего запроса на ввод. (как статическая переменная)
static DateTime s_lastUse;
//...
UseFileServer()
{
s_lastUse = DateTime.Now;
}
//...
CreateNewConnection()
{
if((DateTime.Now - s_lastUse) > TimeSpan.FromSeconds(900))
{
//do cleanup....
}
}
Возможно ли это в многопоточной архитектуре? Возможно, если две операции записи произойдут в одно и то же время, значение в переменной будет искажено.
Do .Net убедитесь, что эта операция записи является атомарной?
s_lastUse = DateTime.Now;