我已经使用字典类实现了一个简单的缓存:
private Dictionary<int, byte[]> cache = new Dictionary<int, byte>();
public void SetPicture(int id, byte[] bytes)
{
cache[id] = bytes;
}
public byte[] GetPicture(int id)
{
if (cache.Contains(id)) {
return cache[id];
}
return null;
}
SetPicture 仅从单个后台线程调用。(此后台线程正在从活动目录查询中更新用户个人资料图片)。
GetPicture 从多个其他线程(处理 http 请求的线程)调用。
项目永远不会从缓存中删除。
那么这个代码线程安全吗?或者我是否需要在 SetPicture 中写入时阻止对内部字典的访问?