C ++ использовать асинхронный, когда класс уничтожает блокировку, использовать поток не проблема - PullRequest
0 голосов
/ 22 ноября 2018
//in dll file
#include <future>
class a
{
public:
    a() 
    {
        //:m_thread=std::thread([this]{});
        m_f = std::async(std::launch::async,[this]{});              
    }       
    ~a() 
    {                                   
        m_f.get();          //most time there m_f lock,sometime not
        //m_thread.join();  //  if use thread no problem
    }
private:
    std::future<void> m_f;  
    //std::thread m_thread;             
};

//out to dll
void aa()
{
    static a aa;
}

//in test file
#include "a.h"
#pragma comment(lib,"a.lib")
int main()
{
    aa();
}

если класс a находится в тестовом файле, а не в файле dll, нет проблем, использовать поток без проблем, в то время как класс находится в файле dll, а функция out использует статические, чаще всего блокируется, иногда проходит. в чем проблема?

...