Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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 - Fatal编程技术网

C# 多线程内存流

C# 多线程内存流,c#,multithreading,C#,Multithreading,我有一个应用程序,我想在常驻内存中保留一个ZipArchiveEntry,但让多个线程同时访问它,以便它们都可以从中读取。但是,我还想了解我的应用程序的内存占用,在多个内存流中保留相同的数据不是很有效。我是否可以使用任何允许多个线程同时从同一个MemoryStream读取的方法?可能不明智,因为内存流的位置在读取时会发生变化。您可以共享备份数组缓冲区,并让每个线程根据需要将其包装在MemoryStream中。@Amy我知道,由于位置的原因,我不能对每个线程使用完全相同的MemoryStream。

我有一个应用程序,我想在常驻内存中保留一个ZipArchiveEntry,但让多个线程同时访问它,以便它们都可以从中读取。但是,我还想了解我的应用程序的内存占用,在多个内存流中保留相同的数据不是很有效。我是否可以使用任何允许多个线程同时从同一个MemoryStream读取的方法?

可能不明智,因为内存流的
位置在读取时会发生变化。您可以共享备份数组缓冲区,并让每个线程根据需要将其包装在
MemoryStream
中。@Amy我知道,由于位置的原因,我不能对每个线程使用完全相同的
MemoryStream
。但是,我不想使用x10存储相同数据的内存。如果我使用相同的字节数组创建x10 MemoryStream,CLR会足够聪明,不会复制内存使用情况?内存流不会复制数组缓冲区。您可以有100个内存流封装在同一个缓冲区中,而不会占用内存。谢谢!我想这解决了我的问题。我只是想用错误的方式。我真的不想写一个好的答案,所以请随意写。在一个时间限制过后,您可以接受自己的答案。这可能是不明智的,因为内存流有一个
位置,该位置在读取时会发生变化。您可以共享备份数组缓冲区,并让每个线程根据需要将其包装在
MemoryStream
中。@Amy我知道,由于位置的原因,我不能对每个线程使用完全相同的
MemoryStream
。但是,我不想使用x10存储相同数据的内存。如果我使用相同的字节数组创建x10 MemoryStream,CLR会足够聪明,不会复制内存使用情况?内存流不会复制数组缓冲区。您可以有100个内存流封装在同一个缓冲区中,而不会占用内存。谢谢!我想这解决了我的问题。我只是想用错误的方式。我真的不想写一个好的答案,所以请随意写。在一个时间限制过后,您可以接受自己的答案。