gpt4 book ai didi

c++ - 将 lambda 传递给 asio async_wait

转载 作者:行者123 更新时间:2023-11-28 04:13:20 27 4
gpt4 key购买 nike

为什么将 lambda 传递给 asyn_wait() 需要 auto ... 参数,而传递函数不需要这样的东西(即只需要函数名就可以),如 timer.async_wait( &print );

int main()
{
boost::asio::io_service io_service;

boost::asio::deadline_timer timer( io_service, boost::posix_time::seconds(5) );
timer.async_wait( []( auto ... ){ //# ?
std::cout << timestamp() << ": timer expired\n";
});

std::cout << timestamp() << ": calling io_service run\n";

io_service.run();

std::cout << timestamp() << ": done\n";

return 0;
}

最佳答案

正如 Vinci 所说,回调需要如下所示:

void handler(
const boost::system::error_code& error // Result of operation.
);

库保证回调只被调用一次。当计时器到期或等待操作在后一种情况下被取消时,error_code 设置为 boost::asio::error::operation_aborted

来源:boost documentation

关于c++ - 将 lambda 传递给 asio async_wait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57212903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com