3

是否建议放置一个永远不会在构造函数中结束的while循环?或者我应该使用线程来获得相同的结果?构造函数永远不会终止是好事吗?还是避免分段错误更安全?

希望你能理解我糟糕的英语..

4

5 回答 5

10

如果对象的构造函数没有完成,则该对象不存在。因此,在构造函数中放置一个 while(1) 循环将阻止使用该构造函数创建对象。你需要描述你认为这样做会解决什么问题。

于 2010-01-03T14:05:27.300 回答
5

是否建议放置一个永远不会在构造函数中结束的while循环?

不。

或者我应该使用线程来获得相同的结果?

不。

构造函数永远不会终止是好事吗?

不。

还是避免分段错误更安全?

不。

你想解决什么问题?

于 2010-01-03T17:50:51.177 回答
1

我会说从构造函数中产生一个线程是完全可以的,而在构造函数中有一个无限循环是一个非常糟糕的主意。

在代码中,以下是可以的:

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 指出的原因,您可能无法使用这样的对象:)

于 2010-01-03T16:58:42.800 回答
1

无论您的代码是否使用多个线程或包含无限循环,都不应生成分段错误。

这些都与分段错误无关。如果发生这些情况,您需要解决该问题

于 2010-01-03T21:19:21.073 回答
0

在嵌入式系统中,应该避免大多数无限循环。它们应该是定时的或计数的迭代。如果循环终止,则应执行错误检查。这避免了系统被“锁定”。

该规则的一个例外是后台循环。这是检查事件并保持机器运行的主循环。如果没有这个循环,机器可能会终止或停止。

于 2010-01-03T20:19:06.467 回答