startup.dos在系统启动后自动执行完毕,然后里面加载的plugin对象就被自动销毁了,怎么保持这个插件对象的生命周期呢?

attachments-2022-07-IIKDpw2G62cf76ddedd6d.jpg用C++写了个插件对象,用startup.dos脚本启动创建了它,但是startup.dos执行完毕,这东西就被析构了。现在想一直保留它。

请先 登录 后评论

1 个回答

陈枢之 - 工程师

3种办法:

1.在C++层面,创建一个全局的外部字典变量。您用脚本触发创建对象的C++动作,然后在C++层面把您这个对象存入这个字典里。相当于完全在C++层面管理这个实例。例子:https://gitee.com/dolphindb/DolphinDBPlugin/blob/master/zmq/src/pluginZmq.cpp

代码里有个外部字典:DictionarySP status_dict = Util::createDictionary(DT_STRING, nullptr, DT_ANY, nullptr);

把变量存入里面,就不会析构。


2.在插件类代码里面封一个阻塞的方法,startup.dos启动脚本的末尾就执行它,让startup.dos在C++层面一直阻塞不返回,就不会析构了。


3.把startup.dos的里面的函数提交成job,然job循环执行,job里面的变量也可以不析构。


建议是第一种

请先 登录 后评论
  • 1 关注
  • 0 收藏,915 浏览
  • snake3342 提出于 2022-07-14 09:51