0

我处于调用join()对象boost::thread引发thread_resource_error异常的情况。查看文档没有提到这个方法可能会抛出这样的异常。

我不太确定从哪里开始调试。关于什么可能导致这种情况的任何建议?

4

1 回答 1

2

查看 boost 源代码,我发现以下内容:

void thread::join()
{
    if (this_thread::get_id() == get_id())
    {
        boost::throw_exception(thread_resource_error(system::errc::resource_deadlock_would_occur, "boost thread: trying joining itself"));
    }
    detail::thread_data_ptr local_thread_info=(get_thread_info)();
    if(local_thread_info)
    {
        this_thread::interruptible_wait(local_thread_info->thread_handle,detail::timeout::sentinel());
        release_handle();
    }
}

所以基本上它有一些未记录的行为,thread_resource_error如果一个线程试图加入自己,它会抛出一个。

于 2012-10-09T09:18:21.620 回答