Pantheios和boost :: thread

时间:2012-06-19 20:21:57

标签: c++ boost boost-thread pantheios

我在使用带有boost :: threads的pantheios日志库时遇到了一些麻烦。似乎如果我在创建线程之前使用任何pantheios日志记录,我将得到一个段错误。

例如,以下内容可行:

thread_ = new boost::thread(&foo);
pantheios::log(pantheios::debug, "Hello world");

但是如果切换语句的顺序,堆栈跟踪会显示我在boost start_thread崩溃。

pantheios::log(pantheios::debug, "Hello world");
thread_ = new boost::thread(&foo);
// SEGFAULT!

有什么想法吗?

编辑:更多背景

int main()
{
    pantheios::log(...);
    MyClass myClass(/* some arguments, which are all literals */);

    // Do some more work

    return 0;
}

// MyClass constructor
MyClass::MyClass(/* args */)
    : member1_(arg1)
    , member2_(arg2)
{
    thread_ = new boost::thread(&MyClass::workerLoop, this);
}

// Destructor
MyClass::~MyClass()
{
    thread_->join();
    delete thread_;
}

这将在start_thread处发生段错误。如果我在main中交换两行,它将再次运行,没有任何问题。

1 个答案:

答案 0 :(得分:0)

看起来我想通了。我正在链接到不同版本的boost。我的系统有升级版本1.40,而我还使用了我下载的更新版本的1.49。值得注意的是我链接的提升线程是旧版本。

一旦我建立了提升一致的链接,一切都按预期工作。