使用Boost Thread在具有不同输入的多个线程上运行函数

时间:2013-01-17 19:28:51

标签: c++ boost boost-thread

假设我有一个返回地图的函数,如:

std::map<std::string,std::string>  functionname(string abc123)

如何使用boost线程将不同的字符串传递给不同线程中的相同函数?(返回的值存储在不同的变量中)

1 个答案:

答案 0 :(得分:2)

int main()
{
    string param1 = ...;
    string param2 = ...;

    typedef std::map<std::string,std::string> RetT;
    boost::future<RetT> f1 = boost::async(boost::launch::async,
        boost::bind(functionname, param1));
    boost::future<RetT> f2 = boost::async(boost::launch::async,
        boost::bind(functionname, param2));

    // here they run....

    RetT r1 = f1.get(); // waits for f1
    RetT r2 = f2.get(); // waits for f2

    // Here we have the results in r1 and r2
}