是否建议放置一个永远不会在构造函数中结束的while循环?或者我应该使用线程来获得相同的结果?构造函数永远不会终止是好事吗?还是避免分段错误更安全?
希望你能理解我糟糕的英语..
是否建议放置一个永远不会在构造函数中结束的while循环?或者我应该使用线程来获得相同的结果?构造函数永远不会终止是好事吗?还是避免分段错误更安全?
希望你能理解我糟糕的英语..
如果对象的构造函数没有完成,则该对象不存在。因此,在构造函数中放置一个 while(1) 循环将阻止使用该构造函数创建对象。你需要描述你认为这样做会解决什么问题。
是否建议放置一个永远不会在构造函数中结束的while循环?
不。
或者我应该使用线程来获得相同的结果?
不。
构造函数永远不会终止是好事吗?
不。
还是避免分段错误更安全?
不。
你想解决什么问题?
我会说从构造函数中产生一个线程是完全可以的,而在构造函数中有一个无限循环是一个非常糟糕的主意。
在代码中,以下是可以的:
void start_a_thread_with_a_loop()
{
while(1)
{
// consider a while(!stop_condition) or something
// do something in a loop
}
}
class x
{
public:
x()
{
start_a_thread_with_a_loop();
}
};
以下至少是一个坏主意:
class x
{
public:
x()
{
while(1)
{
}
}
};
不过,好事是,由于 Neil 指出的原因,您可能无法使用这样的对象:)
无论您的代码是否使用多个线程或包含无限循环,都不应生成分段错误。
这些都与分段错误无关。如果发生这些情况,您需要解决该问题
在嵌入式系统中,应该避免大多数无限循环。它们应该是定时的或计数的迭代。如果循环终止,则应执行错误检查。这避免了系统被“锁定”。
该规则的一个例外是后台循环。这是检查事件并保持机器运行的主循环。如果没有这个循环,机器可能会终止或停止。