Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为多用户环境访问单个资源_C#_Multithreading_Resources_Real Time_Threadpool - Fatal编程技术网

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

C# 为多用户环境访问单个资源,c#,multithreading,resources,real-time,threadpool,C#,Multithreading,Resources,Real Time,Threadpool,我正在开发一个几乎接近实时应用程序的应用程序,将有100多个用户连接到此应用程序 现在我的问题是,我有一个二进制资源,即mp3文件。我正在为每个用户创建一个单独的用户实例,应用程序运行良好,但问题是该文件的大小超过5MB,因此如果我为100个用户创建单独的实例,其大小将为500MB,因此它会持续消耗内存 我正在考虑的另一个解决方案是将此资源保持为全局(静态),但由于这是一个多用户环境应用程序,并且所有用户都将持续访问该资源,我认为如果我将此资源保持为所有用户的全局,则可能会出现问题 你有什么建议

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

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

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

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


提前感谢。

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

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


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

是写入资源还是只读资源?你也可以考虑一个中间层,比如说,10个拷贝,每个用户共享10个。如果用户只读取文件,你可以引用被加载的文件对象的计数,(锁定计数还是使用原子)?谢谢回复…该资源是只读的