【发布时间】: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