有没有办法在C ++中实现这样的通信?
用例:
我的主程序调用外部库的一个函数来处理列表。每次函数遍历列表时,它都会向调用者发送ping。后者使用收到的信号来跟踪前者的进度并发回一个布尔乒乓[true:好的,继续; false:用户想要中止该过程,现在返回]。
这比迭代主程序中的列表更有效,让函数只处理单个项目吗?或者整个想法只是废话?
答案 0 :(得分:1)
听起来就像你在谈论回调功能一样。函数指针:
typedef bool (* Callback)(int mumble);
void processList(Callback notify) {
while (processingList) {
if (!notify(42)) break;
// etc..
}
}
答案 1 :(得分:0)
如果它是您正在处理的整个列表,为什么不使用函数调用的返回值来指示迭代何时完成。如果你想继续,再次调用该函数 - 如果没有,不要。
答案 2 :(得分:0)
也许您应该使用boost::signal
。这至少与使用回调函数一样好。