DateTime
不能被声明为 volatile
,这是正确的吗?
private DateTime _time;
public DateTime Time
{
get
{
Thread.MemoryBarrier();
return _time;
}
set
{
_time = value;
Thread.MemoryBarrier();
}
}
该属性可能会被不同的线程访问,因此我希望确保它们始终获取最新版本,而不使用争用(lock)。
编辑:
- 我有一组难以创建的项目,每个项目都有一个名为
CreationTime
的DateTime
属性,指示创建该项的时间。它初始化为DateTime.UtcNow
。 - 每次访问一个项目时,该属性都会更新为
DateTime.UtcNow
。 - 有一个线程在定时计时器中运行,检查
if (DateTime.UtcNow + 1小时)> item.CreationTime
,如果为真,则删除该项。
我想确保当“删除线程”进入集合时,所有项目都具有其最新的“上次访问”DateTime
,因此我可以避免再次创建该项,只是因为缓存保存了该值几毫秒。 :D
InterlockedExchange
解决方案是正确的选择。 - Moo-Juice