通过确定性,我隐约意味着可以用于航空航天飞行软件等关键实时软件.垃圾收集器(以及动态内存分配)在飞行软件中是很大的禁忌,因为它们被认为是非确定性的.但是,我知道正在对此进行研究,所以我想知道这个问题是否已经解决了.
我还在问题中包括任何垃圾收集算法,这些算法限制了它们的使用方式.
假设我们有多个线程都调用相同的函数:
def foo
# do stuff ...
end
100.times do |i|
Thread.new do
foo
end
end
Run Code Online (Sandbox Code Playgroud)
如果当前有两个或多个线程foo,那么它们各自共享相同的局部变量foo吗?
这与我的第二个问题有关.线程是否具有单独的堆栈帧,或者它们是否在单个进程中共享堆栈帧?具体来说,当每个调用多个线程foo并foo返回之前,foo堆栈上是否有多个副本,每个副本都有自己的局部变量,或者foo堆栈中只有一个副本?
任何人都可以解释为什么重载运算符 - >类Foo没有从类型Foo*的指针调用?
#include <iostream>
using namespace std;
class Foo {
public:
Foo * operator -> () {
cout << "calling Foo * operator -> ()\n";
return this;
}
int x;
};
void main() {
Foo f;
Foo * pF = &f;
pF->x; // Why is overloaded operator-> not being called here?
(pF->operator->())->x; // This works.
cout << "End test.\n";
}
Run Code Online (Sandbox Code Playgroud)