【问题标题】:bad access when calling pthread_getspecific in boost thread在 boost 线程中调用 pthread_getspecific 时访问不正确
【发布时间】:2013-08-19 11:13:36
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

    标签: c++ macos pthreads boost-thread thread-local-storage


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 2015-11-14
      • 2014-02-05
      相关资源
      最近更新 更多