我们的(Windows 原生 C++)应用程序由线程对象和管理器组成。它写得非常好,其设计可以看到 Manager 对象控制其 minions 的生命周期。各种对象调度和接收事件;有些事件来自 Windows,有些是自产的。
一般来说,我们必须非常了解线程互操作性,因此我们使用手动同步技术,使用 Win32 临界区、信号量等。但是,有时由于事件处理程序重新进入等原因,我们在关闭期间会遇到线程死锁。
现在我想知道是否有一个像样的应用程序关闭策略,我们可以实施以使其更容易开发 - 比如每个对象从中央控制器注册关闭事件并相应地改变其执行行为?这是否太天真或脆弱?
我更喜欢不规定重写整个应用程序以使用 Microsoft 的并行模式库或类似的策略。;-)
谢谢。
编辑:
我想我正在寻求一种方法来控制复杂应用程序中的对象生命周期,其中许多线程和事件一直在触发。Giovanni 的建议是显而易见的(我们自己动手),但我相信必须有各种现成的策略或框架,以便以正确的顺序干净地关闭活动对象。例如,如果您想将您的 C++ 应用程序基于 IoC 范例,您可能会使用 PocoCapsule 而不是尝试开发自己的容器。在应用程序中控制对象生命周期是否有类似的东西?