我有一个提供一些数据的回调函数。
callback([](int check) {
});
我想一直调用这个回调函数,直到返回值为check
0。我该怎么做?回调函数需要一些时间来发送数据。如果我正常使用循环,它会在我等待第一次回调的结果时多次调用回调。
如果同步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] 删除。
我来说两句