C ++依次运行两个函数(线程)

时间:2015-01-23 19:31:42

标签: c++ multithreading stack-overflow daemon

我想在Linux上创建一个守护进程,它基本上会一个接一个地运行两个函数(两个空洞)。我尝试了两种方法:

1)首先

void func1()
{
    boost::posix_time::seconds workTime(3);
    boost::this_thread::sleep(workTime);
    func2();
}
void func2()
{
    boost::posix_time::seconds workTime(3);
    boost::this_thread::sleep(workTime);
    func1();
}
int main()
{
    func1();
    return 0;
}

2)使用线程的第二种方法:

void func1()
{
    boost::posix_time::seconds workTime(3);
    boost::this_thread::sleep(workTime);
    boost::thread func2thread(func2);
    func2thread.join();
}
void func2()
{
    boost::posix_time::seconds workTime(3);
    boost::this_thread::sleep(workTime);
    boost::thread func1thread(func1);
    func1thread.join();
}
int main()
{
    boost::thread func1thread(func1);
    func1thread.join();
    return 0;
}

这两种情况最终都会导致堆栈溢出。我希望函数依次运行的原因是因为我希望第一个填充数组,第二个处理其中的值然后清除它。实现这样的事情的最佳方式是什么?

1 个答案:

答案 0 :(得分:3)

while (true) {
    func1();
    boost::this_thread::sleep(boost::posix_time::seconds(3));
    func2();
    boost::this_thread::sleep(boost::posix_time::seconds(3));
}

想到最简单的事情