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