如何模仿功能空间

时间:2014-03-18 08:06:30

标签: c# c++ multithreading function

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

lock(Object)
{
  //Logic
}//unlock(Object) if you prefer c++

现实中只有一个内存块。有没有什么方法可以创建这样的内存空间,所以我可以在这些函数空间上操作变量。所有这些功能空间都具有相同的功能。下面的图片可以正确解释

enter image description here

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

EDIT1:       我有兴趣知道“标题”是否可行。我给出了问题,让你知道我是如何得到这个想法的。

EDIT2:      我认为在大多数语言中,任何函数都只有一个实例。这项法律无处不在,包括线程。我想要一个相同功能的许多实例。

1 个答案:

答案 0 :(得分:2)

  

现实中只有一个内存块。

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

实际上,您获得的内容与您在标题为What I am Saying的插图中描述的内容类似。

来自Wikipedia(强调我的):

  

本地数据存储
  子程序经常需要内存空间   存储局部变量的值,已知的变量   仅在活动子例程内,并且不保留其后的值   回报。为此用途分配空间通常很方便   只需移动堆栈顶部足以提供空间。   与堆分配相比,这非常快。 注意每个单独的   激活子程序在堆栈中获得自己独立的空间   对于当地人