务实的设计模式

时间:2015-05-22 17:28:35

标签: c++ multithreading design-patterns

我正在闯入一个设计糟糕的子系统,经历了两代“微小的变化”,并且变成了一个血腥的混乱。我遇到的一个有趣的混乱是程序如何将整个程序选项传递到它启动的两个线程中:它将程序选项复制到每个线程选项中,并将每个线程选项传递给线程。这似乎很愚蠢,因为程序选项已存储在全局对象中。

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

据我所知,执行此操作的程序员当时正在阅读“设计模式”,并且有点“减少未说明的依赖关系”的口头禅,但是从全局复制选项似乎浪费时间和空间。

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

1 个答案:

答案 0 :(得分:0)

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

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