为多用户环境访问单个资源

时间:2012-04-06 06:26:18

标签: c# multithreading resources real-time threadpool

我正在开发一个几乎接近实时应用程序的应用程序,我将有超过100个用户连接到此应用程序。

现在我的问题是我有一个二进制资源,即一个mp3文件。我正在为每个用户创建一个单独的用户实例,并且应用程序工作正常,但问题是该文件超过5MB,因此如果我为100个用户创建单独的实例,则大小将为500MB,因此它会持续消耗内存

我正在考虑的另一个解决方案是将此资源保持为全局(静态),但由于这是一个多用户环境应用程序,并且所有用户都将持续访问该资源,我认为可能存在问题我将此资源保留给所有用户全局。

你有什么建议?如果您有任何其他想法,请分享。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在性能和内存使用方面需要权衡。

如果向所有用户提供相同的二进制资源,最好将其保持全局(假设用户没有访问控制来访问资源)。但是,不是将所有二进制资源连续存储在存储器中,而是可以实现用于缓存资源的机制。

当用户第一次访问特定资源时,可以将其加载到内存中。如果在配置的间隔后没有任何用户访问它,则可以从内存中删除它。