我有一个回调函数,它提供了一些数据。
callback([](int check) {
});我想一直调用这个回调函数,直到check的返回值为0。我该怎么做呢?回调函数需要一些时间来发送数据。如果我通常使用循环,则在等待第一个回调的结果时,它会多次调用回调。
发布于 2021-06-08 17:37:58
如果callback同步执行回调(并假定它接受任何可调用),则只需使用捕获:
bool go;
do callback([&go](int check) {go=check;}); while(go);或者,如果callback在另一个线程中执行回调,则可以使用std::promise“撤消”并发。
while([] {
std::promise<bool> p;
callback([&p](int check) {p.set_value(check);});
return p.get_future().get();
}());这里的包装器lambda允许我们避免再次声明go,只是为了正常分配给它。
https://stackoverflow.com/questions/67881434
复制相似问题