我之前问过类似的问题,但没有意识到这还不够具体。
所以我有这个函数,它必须接受打印函数的所有参数,以及...和所有参数,然后将其放入稍后将调用实际打印函数的队列中。
就像是:
std::queue<SOMETHING> queue;
template <typename... Params>
void printLater(int a, int b, char* fmt, Params ...args) {
queue.push(args);
}
template <typename... Params>
void print(int a, int b, char* fmt, Param ...args) {
//whatever
}
void actuallyPrint() {
//whatever
print(queue.pop());
}
上下文:我正在使用一个只能每 50 毫秒处理一次请求的硬件,否则它们将被忽略。我的目标是创建一个包装器,如果我一次发送一堆,它会自动添加延迟。
如果我不能这样做,我的后备方案是,尽管我宁愿这样做,但只是将 sprintf (或 C++ 等效项)转换为字符串,仅将字符串存储在队列中并调用print()
没有所有参数。
也许是这样的:
std::queue<std::function<void()>> queue;
template <typename... Params>
void printLater(int a, int b, char* fmt, Params ...args) {
queue.push([=](){ print(a, b, fmt, args...); } );
}
void actuallyPrint() {
queue.front()();
queue.pop();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)