修复这个 std::async 调用
Posted
技术标签:
【中文标题】修复这个 std::async 调用【英文标题】:Fix This std::async Call 【发布时间】:2017-05-23 00:51:15 【问题描述】:std::async
有问题,我写的每一种方式都证明是非法的。有人有什么建议吗?
PS:这是一个异步 IP 范围扫描器。
bool PortCheck(std::string ip, int port)
std::vector<std::pair<std::string, std::future<bool>>> JobPool;
std::future<bool > f = PortCheck(argStartAddress, argPort);
JobPool.push_back(std::make_pair(
argStartAddress,
f
));
【问题讨论】:
***.com/help/how-to-ask *** 有这些要求是有原因的。这里有很多与您的问题无关的代码;它使回答变得更加困难。请制作一个最小的、完整的和可验证的例子(你能重现问题的最小的东西)。std::future<bool> f = std::async(std::launch::async, PortCheck, argStartAddress, argPort);
【参考方案1】:
std::future<bool> f = std::async(PortCheck, argStartAddress, argPort);
JobPool.push_back(std::make_pair(
argStartAddress,
std::move(f) // note std::move
));
【讨论】:
不起作用,“std::futurePortCheck
是某个类的成员函数吗?我不禁注意到你忽略了这个重要的事实。因此,提供an MCVE 的重要性
那么,显示它所属的类,以及您希望调用PortCheck
的该类的实例。换句话说,准备一个 MCVE。以上是关于修复这个 std::async 调用的主要内容,如果未能解决你的问题,请参考以下文章