我遇到了std::async
的麻烦,在MSVC 2012上使用相同的代码工作正常,但在2015年相同的代码不是异步的。
std::async(std::launch::async, MyClass::MyMethod, this);
std::cout << "IT WORKS!!!\n";
MyClass上的MyMethod
static void MyMethod(MyClass *myObject) {
while (true) {
std::cout << "Works fine inside " << myObject->name << "\n";
Sleep(2000);
}
}
关键是......永远不会看到打印IT WORKS!!!
我在Visual 2012上尝试相同的代码并且工作得很完美。这可能是错误的吗?
EDITED
更改后
auto _ = std::async(std::launch::async, MyClass::MyMethod, myObject)
它的工作方式不同,但没有那么明确。
说明:有一个CommLink对象使用套接字来重新接收信息,这个线程通过crouue向“引擎”发送信息,“引擎”创建其他线程(MyClass)来捕获相机图像......现在调用“相机”
更改后,Camera线程工作,但Engine不会创建第二个和soo。