以下代码若在exe中是没问题的,若在dll中大部分情况是会卡住的,然而将future换成thread又没有问题了,不知道是什么情况。
class a
{
public:
a()
{ //若改为 thread 没问题
f = std::async(&a::fun, this); //t.start(&a::fun, this);
}
void fun()
{
std::cout << "开始\n";
}
~a()
{
f.get(); //导出函数aa,会在析构函数f.get()处卡主
//t.join()
}
private:
std::future f; //thread t;
};
//此为dll导出函数
void aa()
{
static a aa;
}
//若不导出,直接使用类a,是没问题的,导出函数aa,会在析构函数f.get()处卡主
//若将future改为thread又没有问题了,这是什么情况
int main()
{
aa();
}