我创建了一个指向这样的对象的唯一指针:
std::unique_ptr<MyClass> myObj(new MyClass(arg1, arg2));
那里有一个方法,我需要在并行线程中执行。我不想等待它完成。它将运行一个 for 循环并等待某些东西并在自己的时间内完成。
我试着这样称呼它:
std::async(std::launch::async, &MyClass::MyMethod, myObj.get(), someArg, anotherArg);
也像这样:
std::async(std::launch::async, [&] {myObj->MyMethod(someArg, anotherArg); });
两个调用都成功并执行方法中的任何内容。但我没有得到任何并行性。无论我从哪里调用它,执行都会等待,并且在方法完成之前不会继续执行。在自己的线程中运行此方法而不等待它的好方法是什么?我应该使用一些特殊的编译器标志来实现这一点吗?我在 Ubuntu 上使用 GCC 4.8.1。