假设我有两个 C++ 函数 foo1() 和 foo2(),我想最小化 foo1() 开始执行但由于某些外部事件而没有调用 foo2() 的可能性。我不介意两者都没有被调用,但是如果 foo1() 被调用,则 foo2() 必须执行。这两个函数可以连续调用并且不会抛出异常。
将函数包装在对象中并在析构函数中调用两者有什么好处/缺点?如果应用程序是多线程的(比如父线程崩溃),情况会改变吗?只要 foo1() 被调用,是否有任何其他选项可以确保调用 foo2() ?
我认为将它们放在析构函数中可能有助于例如 SIGINT,尽管我了解到 SIGINT 会立即停止执行,即使在析构函数的中间也是如此。
编辑:
澄清一下: foo1() 和 foo2() 都将被抽象出来,所以我不担心其他人以错误的顺序调用它们。我的担忧仅与应用程序执行期间的崩溃、异常或其他中断有关(例如,有人按下 SIGINT、另一个线程崩溃等)。