将指针作为参数传递给async会产生编译器错误

时间:2015-08-05 08:55:38

标签: multithreading c++11

我试图让我的头脑异步,但尚未找到传递指针的方法。目的是将指针传递给指针,以便线程readTable将指针初始化为PostgreSQL连接,如下所示。

PGconn *conn = NULL;
future<int> resultFuture;

void init
{
    resultFuture = async(launch::async, readTable(&conn));
}

However the compiler complains with:
error: no matching function for call to ‘async(std::launch, int)'

像async一样传递指针不允许使用async吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我想

void init
{
    resultFuture = async(launch::async, readTable,&conn);
}

第二个参数是Callable(它是指针的函数,或者是具有重载operator()或lambda函数的对象)。所有其余的都是传递给callable的参数。

请在此处阅读std::async文档: http://en.cppreference.com/w/cpp/thread/async

和约perfect forwarding在这里: Advantages of using forward