我有一个文件服务器连接池。(缓存连接的文件服务器)现在,如果池中有 100 个打开的连接,我想在一段时间后进行清理。
我会在 15 分钟后进行清理。(例如在 15 分钟不活动后关闭 20% 的活动连接)
为此,我需要记住最后一个传入请求的时间戳。(作为静态变量)
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;