我上周想到了这个想法。我参与创建一个应用程序,可以使用给定的正则表达式分析200GB的日志文件,并将报告作为CSV文件。所以多线程是显而易见的。但即使我们以编程方式使用多线程,如下所示
lock(Object)
{
//Logic
}//unlock(Object) if you prefer c++
现实中只有一个内存块。有没有什么方法可以创建这样的内存空间,所以我可以在这些函数空间上操作变量。所有这些功能空间都具有相同的功能。下面的图片可以正确解释
注意:即使委托和匿名函数也是单个函数/内存块。
EDIT1: 我有兴趣知道“标题”是否可行。我给出了问题,让你知道我是如何得到这个想法的。
EDIT2: 我认为在大多数语言中,任何函数都只有一个实例。这项法律无处不在,包括线程。我想要一个相同功能的许多实例。
答案 0 :(得分:2)
现实中只有一个内存块。
这个假设是不正确的。调用函数会将该函数的所有局部变量推送到线程本地堆栈。
实际上,您获得的内容与您在标题为What I am Saying
的插图中描述的内容类似。
来自Wikipedia(强调我的):
本地数据存储
子程序经常需要内存空间 存储局部变量的值,已知的变量 仅在活动子例程内,并且不保留其后的值 回报。为此用途分配空间通常很方便 只需移动堆栈顶部足以提供空间。 与堆分配相比,这非常快。 注意每个单独的 激活子程序在堆栈中获得自己独立的空间 对于当地人。