windows seh 如何处理线程锁的问题
有这样一段代码
boost::mutex mtx_n;
void foo_set(void)
{
boost::mutex::scoped_lock lk(mtx_n);
std::cout << "thread_id " << boost::this_thread::get_id() << " call "<< std::endl
//A a; //这个也是一样 没有调用析构
int *p = 0;
*p = 100;
}
template<typename Handler>
void safe_call(const Handler& foo_handler )
{
__try
{
__try
{
foo_handler();
}
__finally
{
std::cout << AbnormalTermination() << std::endl;
}
}
__except(filter(GetExceptionCode(), GetExceptionInformation()))
{
std::cout << "thread_id " << boost::this_thread::get_id() << " jump ok"<< std::endl;
}
}
//调用
safe_call(boost::bind(&foo_set));
safe_call(boost::bind(&foo_set)); // 第二次调用时 会因为lk没有被释放 导致析构函数没执行
// 所以第二次就卡住了
请问各路神仙有没有办法 把这个函数堆栈上的对象释放掉