我正在为大型应用程序开发文件系统观察程序。原始版本为我FileSystemWatcher
班级的每个实例运行了一个监视线程。但是,这会创建太多线程。
该应用程序由许多 DLL“插件”组成,每个插件都静态链接我的文件系统观察程序类所在的基本库:
现在这些 DLL 可能不共享一个用于文件系统监视的线程(它们甚至可能不使用完全相同版本的库进行编译),但是每个插件,a.dll
在b.dll
图片中,应该有一个线程来处理所有文件系统监视请求. 我可以处理实现,但我不知道如何为每个 dll 提供一个实例。
这个想法是有一个单例,但每个 dll 有一个变量实例:
class FileSystemWatcherManager
{
public:
static FileSystemWatcherManager* Instance()
{
// How to make it single instance per dll?
static FileSystemWatcherManager instance;
return &instance;
}
};
如何实现?