1

我正在开发一个在多个主机应用程序中运行的插件,它使用 boost::thread 库版本 1.53.0 维护自己的线程。

在 Mac 上的特定应用程序中运行我的插件时,调用boost::condition_variable::timed_wait(). 在调用堆栈的顶部是对 的调用pthread_getspecific(),它是从 boost 线程库内部调用的。

如果我用timed_wait()对 的调用替换,则相同的行为:在内部调用boost::this_thread_sleep()时抛出异常。pthread_getspecific()

此应用程序是唯一表现出这种行为的应用程序;如果我在其他主机上运行我的插件,它会按预期工作。

我对 pthreads 没有太多经验,但我认为异常一定是由宿主应用程序设置的某些属性引起的。有没有人对这里可能发生的事情有更好的了解?

谢谢!

4

1 回答 1

0

事实证明,pthread API 调用在我的应用程序中不是线程安全的,每当我在单独的线程中调用它们时都会导致空指针崩溃。

于 2013-08-29T08:00:37.547 回答