我有一个 C++ 应用程序,它加载一个 DLL 并传递一个回调。DLL 创建自己的线程,执行一些任务并通过回调将指向 boost::barrier 对象的指针传递给主应用程序。但是当我调用wait()
屏障对象时,我得到一个异常"Microsoft C++ exception: boost::exception_detail::clone_impl boost::exception_detail::error_info_injector boost::thread_resource_error> >
。
相同的代码在 OS X 上运行良好。问题仅在 Windows 上。所以我猜有一些我不知道的 Windows 特定限制。谷歌建议我可能会达到允许的最大线程数限制,但我的应用程序创建的线程数不超过 20 个。所以我认为情况并非如此。
以下是函数:
来自 DLL: s_funPtr(command,s_bar);
s_bar 是一个静态指针。
在主应用程序中
PortCallback(CString command, boost::barrier* bar)
{
bar->wait(); //Throws an exception
}
你能看出它有什么问题吗?