而(1)在构造函数中还是使用线程?

时间:2010-01-03 14:02:44

标签: c++ oop loops while-loop infinite-loop

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

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

5 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:5)

  

是否建议使用while循环,它永远不会在构造函数中结束?

没有

  

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

没有

  

当构造函数永远不会终止时它是否合适?

没有

  

或者避免分段错误更安全吗?

没有

你想解决什么问题?

答案 2 :(得分: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指出:)

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

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