在运行时更改当前未使用的类实现
Change a currently non used class implementation at runtime
我有一个C++代码正在一个大文件(大约15 GB)上执行。该代码有两个阶段,第一阶段需要很长时间才能完成。但与此同时,我为它的第二阶段获得了更好的实现技术,不想从一开始就重新启动整个执行。这两个阶段根据实际使用的两个类进行分类。从中获得一个想法:
Parser.parse(filePath); // phase one
Processor.processAndLog(); // phase two
那么,在Processor类开始执行之前,是否有一些方法可以更改它的实现?阶段1的结束(甚至完成了多少)可以与我打印的一些不时的消息(比如日志)区分开来。
如果Processor.processAndLog
是成员函数指针,则可以在调用之前随时更改它。
另一种选择是让Processor.prrocessAndLog作为其他函数的包装函数——一个调度函数。
还有挂接函数的问题。有一个图书馆叫绕路。仅当您无法更改程序的源代码时才使用此选项。
如果我理解正确的话:您有一个程序当前正在运行,但尚未执行特定类中的代码。您希望找到一种方法来更新它,以便在不停止程序的情况下为该类使用新版本的代码。
理论上这是可以做到的。但在实践中,这可能比它的价值要麻烦得多,尤其是如果这是一次性需求的话。C++不是为这种事情而设计的。这并不是说在进程的内存中有一个简单的人类可读的源代码可以很容易地被覆盖。
正确地做到这一点几乎肯定需要大量的时间和精力,很可能需要大量的实验和追踪和错误。如果你做错了什么(这可能是第一次),那么你可能只是破坏了你的过程和结果,因此无论如何都需要重新启动它。
我不知道你的流程目前需要多长时间,但试图弄清楚如何实现这个想法可能需要更多的时间,而不仅仅是在构建新版本的程序后重新启动流程。
相关文章:
- 普通环路未使用gcc 4.8.5自动矢量化
- 在更改for循环的第三部分后,未使用for循环结果
- 使用typeid警告未使用的变量
- C++删除未使用的类属性会导致 std::logic_error
- 警告 C4552:">>":未使用表达式的结果
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 为什么我会收到警告,指出函数已使用但未定义,以及已定义但未使用?
- 如果我想链接静态库并删除未使用的符号.txt我应该如何处理 Cmakelist
- 可视化C++载体:未使用的容量
- GCC 中 __attribute__((未使用)) 和 __attribute((未使用)) 之间的区别
- 循环访问还包含未使用元素的字符串数组
- Q维德格特关闭事件(..)未使用 QProcess::terminate() 调用
- Visual Studio "fatal error LNK1104: cannot open file"未使用或包含的库
- G++ 编译器是否在未使用返回值的情况下将 constexpr 函数视为常规函数?
- 链接器输入文件未使用,因为链接未完成,我无法获得.o
- 未使用的C++未优化的静态成员函数/变量
- 仅当一个参数中未使用 std::function 时,模板函数替换才有效
- 如何控制或优化或删除或释放 UNION 中未使用的内存
- 未使用的 asm() 在不受支持的体系结构上的行为
- 在运行时更改当前未使用的类实现