【发布时间】:2014-05-04 00:31:15
【问题描述】:
我的 ASP.Net 应用程序中有一些庞大的原始字节数据数组 (1 MB * 100)。他们需要非常频繁地向多个用户广播。
一个线程在后台处理数据并不时更新它们。
您能否就在它们之间共享缓冲区的最佳选项给我一些建议?
【问题讨论】:
标签: c# asp.net resource-management
我的 ASP.Net 应用程序中有一些庞大的原始字节数据数组 (1 MB * 100)。他们需要非常频繁地向多个用户广播。
一个线程在后台处理数据并不时更新它们。
您能否就在它们之间共享缓冲区的最佳选项给我一些建议?
【问题讨论】:
标签: c# asp.net resource-management
这听起来像是内存映射文件的好例子
内存映射文件包含虚拟内存中文件的内容。文件和内存空间之间的这种映射使包括多个进程的应用程序能够通过直接读取和写入内存来修改文件。从 .NET Framework 4 开始,您可以使用托管代码访问内存映射文件,就像本机 Windows 函数访问内存映射文件一样
http://msdn.microsoft.com/en-us/library/dd997372(v=vs.110).aspx
http://msdn.microsoft.com/en-us/library/vstudio/system.io.memorymappedfiles.memorymappedfile
线程处理数据
这是一个 ASP.Net 线程吗?我不会在 IIS (why not) 的上下文中执行那种类型的任务。相反,我建议共享内存由 IIS 之外的单独进程管理,例如 Windows 服务。
内存映射文件机制非常适合更新数据的 Windows 服务,以及根据需要访问数据的单个 ASP.Net 工作线程。
【讨论】: