C# 如何模拟函数空间

C# 如何模拟函数空间,c#,c++,multithreading,function,C#,C++,Multithreading,Function,我是上周想到这个的。我参与创建一个应用程序,它可以使用给定的正则表达式分析200GB的日志文件,并将报告作为CSV文件。因此,多线程是显而易见的。但即使我们以编程方式使用多线程,如下所示 lock(Object) { //Logic }//unlock(Object) if you prefer c++ 实际上它仍然只有一个内存块。有没有办法,我可以制造很多这样的内存空间,这样我就可以在这些函数空间上操作变量。所有这些函数空间都具有相同的功能。下图可以很好地解释这一点 注意:即使是委托函

我是上周想到这个的。我参与创建一个应用程序,它可以使用给定的正则表达式分析200GB的日志文件,并将报告作为CSV文件。因此,多线程是显而易见的。但即使我们以编程方式使用多线程,如下所示

lock(Object)
{
  //Logic
}//unlock(Object) if you prefer c++
实际上它仍然只有一个内存块。有没有办法,我可以制造很多这样的内存空间,这样我就可以在这些函数空间上操作变量。所有这些函数空间都具有相同的功能。下图可以很好地解释这一点

注意:即使是委托函数和匿名函数也可以是单个函数/内存块

EDIT1: 我很想知道“标题”是否可能。我提出这个问题是为了让你知道我是如何得到这个想法的

EDIT2: 我认为在大多数语言中,任何函数都只有一个实例。这条法律适用于任何地方,包括穿线。我希望同一个函数有多个实例

实际上它仍然只有一个内存块

这种假设是不正确的。调用函数会将该函数的所有局部变量推送到线程局部堆栈上

实际上,您得到的与您在题为“我所说的内容”的插图中描述的内容类似

来自(我的):

本地数据存储
子例程经常需要内存空间来执行 存储局部变量的值,即已知的变量 仅在激活的子例程中,且不在其后面保留值 返回。通常,通过以下方式分配用于此用途的空间比较方便: 只需将堆栈顶部移动足够的距离即可提供空间。 这与堆分配相比非常快请注意,每个 子例程的激活在堆栈中获得自己的独立空间 对于本地人


这个问题对我来说似乎不太清楚。你是在问如何创建每线程变量吗?听起来有点像一条鱼吃1000条鲨鱼。日志文件中的数据是固定大小的吗?或者每个记录的大小都是可变的?@prabhakaran你知道函数的每次调用都会有自己的局部变量副本吗?这意味着如果10个线程执行
foo()
,每个线程都将有自己的
foo()
局部变量副本。你能清楚地解释一下,拥有两个(或十个)相同的功能会给你带来什么好处吗?关于投票结束(不是我的,顺便说一句):这里有几个人试图弄清楚你在问什么,因此,以“不清楚你在问什么”的方式暂停投票似乎并不太合适。你得更好地解释自己。