【问题标题】:Pragmatic design pattern务实的设计模式
【发布时间】:2015-05-22 17:28:34
【问题描述】:

我正在撕毁一个设计不佳的子系统,它经历了两代“最小的变化”,现在已经变成一团糟。我遇到的一个有趣的问题是程序如何将整个程序选项传递到它启动的两个线程中:它将程序选项复制到每个线程选项中,并将每个线程选项传递给线程。这似乎很愚蠢,因为程序选项已经存储在一个全局对象中。

我可能应该指出,一旦命令行和配置文件被处理,这些选项是只读的,早在任何线程被操作之前。更改配置文件或命令选项都需要重新启动程序。

我知道这样做的程序员当时正在阅读设计模式,并且有点得到“减少未说明的依赖关系”的口头禅,但是从全局复制选项似乎既浪费时间又浪费空间。

那么,以线程可以访问它们而不复制它们的方式存储整个程序选项的建议方法是什么?

【问题讨论】:

    标签: c++ multithreading design-patterns


    【解决方案1】:

    您可以按原样存储选项(确保它们的生命周期足够长,例如在堆上)并将指向该对象的指针作为参数传递给线程。

    另一方面,通常命令行选项的大小可以忽略不计,如果不复制它们,您几乎不会优化任何东西

    【讨论】:

    • 这也是我的看法。设计的工作方式,可以在程序运行时修改设置,但这发生在执行主线程的上下文中,并且任何时候选项发生变化,两个线程都变得无效,所以简单的方法是停止运行线程并启动新线程,传入更新的选项。
    猜你喜欢
    • 2010-12-18
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    相关资源
    最近更新 更多