继续调用回调,直到通过回调收到特定值

工作搜韩

我有一个提供一些数据的回调函数。

callback([](int check) {
});

我想一直调用这个回调函数,直到返回值为check0。我该怎么做?回调函数需要一些时间来发送数据。如果我正常使用循环,它会在我等待第一次回调的结果时多次调用回调。

戴维斯鲱鱼

如果同步callback执行回调(并假设它接受任何callable),您可以只使用捕获:

bool go;
do callback([&go](int check) {go=check;}); while(go);

或者,如果callback在另一个线程中执行回调,您可以使用 astd::promise来“撤消”并发

while([] {
    std::promise<bool> p;
    callback([&p](int check) {p.set_value(check);});
    return p.get_future().get();
  }());

这里的包装器 lambda 让我们避免go再次声明只是为了正常分配给它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章