hi, 我之前的做法是在init_worker_by_lua_file中通过package.loadlib("test.so", "luac_my_libs")()这种方式加载的(自己写lua与C的交互层)
因为so中的业务数据需要所有的worker共享,而在init_worker_by_lua_file加载动态库会导致每个worker进程都有一份相同的数据
为了解决这个问题 我开始的做法是仅配了一个worker,后来想在init_by_lua_file中加载这份数据,想着可以达到类似ngx.shared.DICT的功能,所以提出了下边的问题。
最后没有解决,全部用lua重写的so模块,用ngx.shared.DICT实现的。
------------------ 原始邮件 ------------------
发件人: "xieqin1";<xie...@gmail.com>;
发送时间: 2016年3月11日(星期五) 中午11:10
收件人: "openresty"<openresty@googlegroups.com>;
主题: [openresty] Re: init_by_lua 加载动态库
hello,现在结果怎样?有没有参考这个:
https://groups.google.com/forum/#!searchin/openresty/loadlib/openresty/h50u4b_HQ6s/K7lpJw4d0D8J
在 2016年1月15日星期五 UTC+8下午12:28:30,赵建写道:
init_by_lua_file中通过package.loadlib("./test.so", "luac_my_libs")()加载动态库,动态库中有一个线程在定时执行任务测试发现,以nginx -c nginx.conf方式启动服务,该线程不能正常工作(很快就被销毁了?),而以nginx -sreload方式重起,线程可以正常工作。
请问这是什么原因呢?
--