我在使用带有 boost::threads 的 pantheios 日志库时遇到了一些问题。似乎如果我在创建线程之前使用任何 pantheios 日志记录,我会得到一个段错误。
例如,以下将起作用:
thread_ = new boost::thread(&foo);
pantheios::log(pantheios::debug, "Hello world");
但是如果切换语句的顺序,堆栈跟踪会显示我start_thread
在 boost 中崩溃了。
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
它将毫无问题地工作。