继续调用回调,直到通过回调接收到特定值
Keep calling a callback until a particular value is recieved through the callback
我有一个提供一些数据的回调函数。
callback([](int check) {
});
我想一直调用这个回调函数,直到check
的返回值为0,怎么办?回调函数需要一些时间来发送数据。如果我正常使用循环,它会在我等待第一次回调结果时多次调用回调。
如果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
只是为了正常分配给它。
我有一个提供一些数据的回调函数。
callback([](int check) {
});
我想一直调用这个回调函数,直到check
的返回值为0,怎么办?回调函数需要一些时间来发送数据。如果我正常使用循环,它会在我等待第一次回调结果时多次调用回调。
如果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
只是为了正常分配给它。