在剪辑中复制环境的构造函数?

Copy construction for an enviromen in clips?

我想从现有的剪辑环境中构建至少数百个环境,然后 运行 在多线程中并发构建这些环境。

Dose clips是否支持此功能(例如深拷贝构造)? 或者如何实现这些功能?

我在我的c++项目中应用了clips的sourcecore。 现在我有一个包含很多的字符串 rules.If 我想同时执行多个请求,我必须多次调用创建方法,但是这次创建这么多相同的环境对我来说太昂贵了。

我用的是clips的c代码。 以下是我的创作过程:

std::unique_ptr<void> CreateClips(const string &rules) {
    std::unique_ptr<void> clips(CreateEnvironment());
    if (!clips) {
        throw runtime_error("[FATAL] clips CreateEnvironment() failed");
    }

    int retcode;
    retcode = ClipsEnvLoadFromString(clips.get(), rules);
    if (retcode != 1) {
        throw runtime_error("[FATAL] clips EvnLoadFromString() failed, " +
                            rules);
    }

    return clips;
}

没有深层复制功能。如果使用 bsave 函数以二进制格式保存规则,则可以使用 bload 函数更快地加载它们。加速比随着二值图像中构造数量的增加而增加。对于具有大约 30 条规则的系统,我看到加速大约快 9 倍,对于具有大约 660 条规则的系统,我看到加速大约快 47 倍。